Una delle novità che sicuramente avrà grosso impatto su Java è l'introduzione delle annotazioni, presenti da Java 5 in poi. Ma cosa sono le annotazioni?
Potremmo dire che le annotazioni sono un modo per rendere più espressivo il nostro codice, anche e soprattutto per il compilatore. Infatti, le annotazioni sono metadati (vale a dire informazioni sulle informazioni), che, per esempio, possono servire a specificare vincoli e controlli sui dati, oppure a far sì che questi vincoli siano interpretabili dalla JVM, dal compilatore o da Javadoc, e così via... Lo sviluppatore può definire le sue proprie annotazioni, e creare processori di annotazioni ad-hoc per la sua applicazione. La sintassi per definire le annotazioni è la seguente:
public @interface annotazione{ //La parola chiave @interface serve a dichiarare un'annotazione
String valore1();
String valore2();
}
public class Prova{
@annotazione(
valore1 = "ciao"
valore2 = "pippo"
)
public void metodoAnnotato(){}
}
Abbiamo dichiarato un'annotazione chiamata "annotazione" con due parametri di tipo stringa, e poi abbiamo dichiarato un metodo (metodoAnnotato) annotato con quell'annotazione, come se fosse uno specificatore d'accesso. Qual'è lo scopo di tutto questo? E' semplice: in un'altra parte del codice, tramite Reflection, si possono ottenere tutti i metodi, classi o variabili marcati con una determinata annotazione ed eseguire delle azioni su di essi (pubblicarli su Internet, formattarne i risultati, ecc.): le applicazioni delle annotazioni sono virtualmente infinite. Certo, è difficile creare e utilizzare in modo pratico annotazioni personalizzate (senza contare che ce ne sono diversi tipi e che si possono annotare altre annotazioni :confused: ); ma, per noi comuni mortali :D, esistono le cosiddette "annotazioni standard", fornite col JDK, che sono in grado di aiutare non poco il programmatore. Esse sono: Deprecated, Override, e SuppressWarnings.
L'annotazione @override può essere usata solo sui metodi e serve a indicare al compilatore che il metodo che segue è override di un altro metodo. Quindi, se per qualche motivo non lo è (per esempio per errore di battitura e quindi alterazione del nome), viene segnalato tramite un warning a compile-time, evitando ore e ore di debug per uno stupido errore. Per esempio:
@override
public void metodoOverridato(){}
L'annotazione @deprecated, come dice il nome, sta ad indicare che il metodo che segue è deprecato; il suo utilizzo è uguale a quello di @override.
L'annotazione @SuppressWarnings serve ad evitare che il compilatore lanci particolari tipi di warning. Esso prende come parametro il tipo di warning da sopprimere. Per esempio, se si vogliono sopprimere i checked warnings, basta fare così:
@SuppressWarnings({"checked"})
void metodo(){}
Questo è ciò che serve per un utilizzo basilare delle annotazioni (almeno quelle standard). Se ne volete sapere di più (spero di avervi invogliato :D), potete cercare altre informazioni sulla rete. In particolare, vi consiglio il capitolo sulle annotazioni del libro di Claudio De Sio, sono spiegate veramente bene.

Feeds
Sondaggio
Condividi
Numeri



Aggiungi un commento