Sei sulla pagina 1di 3

Ing. E.

Tramontana - Annotation - 25-Ott-06 1


Annotazioni in Java
Le annotazioni (annotation) sono meta-dati, ovvero
dati che descrivono dati
Possono essere usate per creare documentazione, per
esprimere dipendenze sul codice e per effettuare controlli a
run-time
Javadoc lo strumento precursore delle annotazioni in Java
Deniva @Deprecated, @author, @version
Le annotazioni sono modicatori che si possono
aggiungere su
Dichiarazioni di package, tipi, costruttori, metodi, parametri
e variabili
Ing. E. Tramontana - Annotation - 25-Ott-06 2
Annotazioni
Ci sono annotazioni predenite e altre possono
essere denite dallutente
Luso di metadati utile per
Creare documentazione
Effettuare controlli a compile-time, es. @Override
Inserire dati che servono a far comprendere o ad
analizzare automaticamente il codice
Generare le di congurazione, etc.
Ing. E. Tramontana - Annotation - 25-Ott-06 3
Tipi di annotazioni
Una annotazione consiste del segno @ seguito dal
nome dellannotazione
Si pu fornire la coppia nome=valore per ulteriori dati
Categorie di annotazioni
Marker: senza variabili, es. @MarkerAnnotation
Singolo valore: solo un valore fornito, es.
@SingleValueAnnotation(valore)
Full: tanti dati sono permessi, es.
@FullAnnotation(var1=dato 1, var2=dato 2)
i tipi di dato permessi sono quelli elementari, le stringhe ed i
tipi enumerativi
Ing. E. Tramontana - Annotation - 25-Ott-06 4
Annotazioni della JDK
@Override
Usata solo per i metodi
Indica un metodo che override di uno della superclasse
Il compilatore controlla e segnala un errore se non cos
@Deprecated
Indica un metodo che non dovrebbe essere usato
Il compilatore segnala un errore quando il metodo invocato
@SuppressWarnings(value={unchecked})
Evita che il compilatore comunichi dei warning, per
lelemento annotato. Utile quando le Java collection sono
usate senza tipo
Il valore passato indica le warning da sopprimere, es.
unchecked
Ing. E. Tramontana - Annotation - 25-Ott-06 5
Denire nuove annotazioni
Nuovi tipi di annotazioni si deniscono come le
interfacce, ma con il segno @
Non sono permessi extends, throws, n parametri per i
metodi
Es. denizione
@interface InProgress {
String value();
}
@interface Name {
String first();
String last();
}
Ing. E. Tramontana - Annotation - 25-Ott-06 6
Uso di annotazioni
Nellesempio seguente, il metodo getText()
annotato con InProgress e Name
@InProgress("manca un parametro")
@Name(first="K", last="Ishiguro")
public String getText() {
return text;
}
Ing. E. Tramontana - Annotation - 25-Ott-06 7
Denire Annotazioni
Le annotazioni possono avere un valore di
default, denito come segue
@interface GroupTODO {
public enum Severity {CRITICAL, IMPORTANT, TRIVIAL, DOCUMENTATION};
Severity severity() default Severity.IMPORTANT;
String item();
String assignedTo();
String dateAssigned();
}
Ing. E. Tramontana - Annotation - 25-Ott-06 8
Annotare le annotazioni
Per alcune annotazioni necessario indicare
ulteriori dati (ovvero meta-annotazioni)
Es. per capire con quali elementi del programma
posso usare una certa annotazione che denisco
@Target si usa per indicare che @TODO si applica
solo ai metodi
@Target({ElementType.Method})
@interface TODO {
String value();
}
Ing. E. Tramontana - Annotation - 25-Ott-06 9
Retention e Documented
Retention la meta-annotazione che permette di
comunicare al compilatore come trattare le annotazioni
Rimuovi le annotazioni dal .class (SOURCE)
Tieni le annotazioni nel .class ma ignorale a runtime (CLASS)
Tieni le annotazioni nel .class e leggile al caricamento della
classe (RUNTIME)
Es. @Retention(RetentionPolicy.SOURCE)
@Documented comunica che lannotazione deve essere
inclusa nel Javadoc della classe
Una annotazione, per essere elaborata da javadoc, dovr
avere inoltre @Retention(RetentionPolicy.RUNTIME)

Potrebbero piacerti anche