Perché l'annotazione Java ignorato nel codice?

December 6

Perché l'annotazione Java ignorato nel codice?


annotazioni Java, aggiunti in Java 1.5, è possibile aggiungere informazioni supplementari su una classe, metodo o campo. Questa informazione può essere utilizzata in vari modi, ad esempio in dettaglio come un programma deve eseguire, o quali metodi dovrebbe essere evitato da altri sviluppatori. A seconda di come le annotazioni erano originariamente codificate, queste informazioni possono essere disponibili solo nel codice sorgente originale, quando si lavora con la classe compilata direttamente o in fase di esecuzione attraverso la riflessione.

Quali sono annotazioni?

In poche parole, una annotazione è la possibilità di aggiungere ulteriori informazioni - anche conosciuto come metadati - al vostro programma sulla voce annotata. Questa informazione può essere semplice come una nota specificando la paternità o qualcosa di così complesso come l'associazione di un campo con una colonna del database. Le annotazioni possono essere gestiti in uno dei tre modi: stando solo nel codice sorgente originale, dove sono in genere visibili solo ad altri sviluppatori; per essere compilato nel bytecode, dove non sono disponibili per l'elaborazione di esecuzione, ma sono a disposizione per i programmi che accedono ai file di classe; e di essere compilato in modo le informazioni vengono caricate in fase di esecuzione in modo che il programma in esecuzione può accedervi.

Perché Richiede annotazione dettagli in fase di esecuzione?

Dato che uno sviluppatore può indicare ulteriori informazioni su un elemento, avendo queste informazioni disponibili in fase di esecuzione in grado di consentire a un programma di agire in modo diverso per l'elemento senza necessariamente richiedere che le informazioni per la compilazione (o anche la funzione). Ad esempio, considerare un'annotazione che associa un campo con una colonna del database; forse sarebbe simile a questa:

@DBField ( "Nome")

String firstName privato;

Durante l'esecuzione, il programma in grado di leggere le informazioni e rendersi conto che deve riempire quel campo in base al contenuto di quella colonna (concessa, sarebbe anche bisogno di tavolo e remare informazioni). Ciò consentirebbe anche all'utente di scrivere, ad esempio, una generica routine di gestione dei dati che si basa su annotazioni e non ha bisogno di molto specializzazione per ogni classe.

Come Java annotazioni vengono ignorate

Come detto in precedenza, ci sono tre modi per il compilatore di gestire un'annotazione viene attraverso nel codice: da demolizione (e quindi lasciando solo nel codice), compilandolo in bytecode e compilazione in bytecode con il informazioni necessarie per caricarlo in fase di esecuzione. La seconda opzione - compilarlo in bytecode (senza caricarla in fase di esecuzione) - è l'impostazione predefinita per tutte le annotazioni, quindi se non diversamente specificato, un'annotazione non sarà disponibile in fase di esecuzione. Tuttavia, specificando questo è estremamente semplice se si ha accesso al codice sorgente del annotazione. Basta aggiungere un'annotazione ulteriore alla definizione della nota:

@Retention (RetentionPolicy.RUNTIME)

@interface MyAnnotation pubblico ...

Usando l'annotazione in runtime

Una volta verificato l'annotazione è disponibile in fase di esecuzione, il suo utilizzo è estremamente semplice. Supponendo di avere un'annotazione denominata "Autore" con un valore di stringa, è possibile utilizzare il seguente codice per assicurarsi che non hanno accesso alla fase di esecuzione l'annotazione:

finale Autore Autore = MyClass.class.getAnnotation (Author.class);

System.out.println (author.value ());

In questo caso, MyClass verrebbe dichiarata come segue:

@Author ( "John Doe")

public class MyClass ...

Quando si esegue le righe sopra, si dovrebbe ottenere il valore per l'annotazione ( "John Doe", in questo caso) stampato sulla console.