Come creare le annotazioni – Lezione 45 di Java Avanzato

Il meccanismo delle annotazioni, meglio conosciuto come Java Annotation, è stato introdotto a partire dalla versione di Java 1.5. Le annotazioni servono ad associare delle etichette al codice, ad un metodo, una classe o ad un campo. Il loro inserimento in Java ha avuto un’importanza considerevole, ha consentito di cambiare stile di programmazione introducendo la possibilità di effettuare introspezione del codice.
Le annotazioni possono essere viste come la possibilità inserire metadati all’interno di codice sorgente Java.

Esistono 3 principali annotazioni fornite da Java:

  • @Deprecated, questa annotazione indica che quell’elemento (classi, metodo o campo) è diventato deprecato, ovvero non più utilizzato. Un metodo deprecato non dovrebbe essere più utilizzato quando si scrivere del codice, esso è attivo solo per mantenere retrocompatibilità con vecchi programmi.

    Un esempio con un annotazione @Deprecated è il seguente:

      public class EsempioDeprecated {
        @Deprecated
        public void f() {
          // Metodo deprecato
        }
      }

    Il metodo f è contrassegnato come deprecato. Compilando il codice avremo un warning del compilatore che ci avvisa che è consigliato non utilizzare metodi deprecati.

  • @Override, quest’etichetta indica che quel metodo è un override di un altro metodo. Probabilmente si tratta dell’annotazione più utile, serve a prevenire eventuali errori: applicando @Override ad un metodo il compilatore si aspetta di trovare un metodo su cui viene fatto l’overriding. Se il metodo risulta essere un override avremmo un errore a compilazione.

    Ecco un esempio per @Override si trova nei thread:

      public class MyThread extends Thread {
        @Override
        public void run() {
          // Questo run è un override del metodo run di Thread
        }

        @Override
        public void Run() {
          // Questo NON è un override del metodo run di Thread!
        }
      }

    Compilando il codice avremo un errore di compilazione per il metodo Run (si noti la prima lettera in maiuscolo) in quando non rappresenta un override del metodo run di Thread. Con l’annotazione @Override siamo in grado di notare eventuali errori a tempo di compilazione.

  • @SuppressWarning, viene utilizzata per sopprimere gli avvisi di warning che il compilatore visualizza. Utilizzando quest’annotazione con un metodo deprecato non avremmo più un messaggio d’avviso che il metodo utilizzato non si dovrebbe utilizzare.
    Un tipico esempio d’uso dell’annotazione @SuppressWarning avviene con le GUI in cui nel metodo initComponents non verranno visualizzati eventuali warning unchecked:

      @SuppressWarnings("unchecked")
      private void initComponents() {
        // ...
      }

Queste annotazioni sono built-in (di default) e in particolare @Deprecated e @Override non accettano argomenti, invece @SuppressWarnings accetta come argomento il nome del warning da sopprimere.

Creare nuove annotazioni in Java con @interface

Le annotazioni rendendo il nostro codice più espressivo, per questo motivo il meccanismo delle annotazioni è molto flessibile. E’ possibile creare facilmente nuove annotazioni, sia con argomenti che senza. La sintassi per la creazione di una nuova annotazione prevede l’utilizzo della parola chiave @interface:

  public @interface NuovaAnnotazione {
    public String site();
    public String administrator() default "";
  }

In questo esempio abbiamo creato una nuova annotazione chiamata NuovaAnnotazione in cui sono stati definiti due tipi stringa: il primo indica il nome di un sito e il secondo l’amministratore del sito (che di default è un stringa vuota). Vediamo un esempio d’uso dell’annotazione appena creata:

  public class Test {
    @annotazione("datrevo", "Alex" )
    public void f() {
      // ...
    }
  }

In questo caso abbiamo definito un nuovo metodo f a cui è associata la nostra nuova annotazione. All’annotazione sono stati passati i due parametri richiesti, il nome del sito e il nome del suo amministratore.
Con le annotazioni tramite la riflessione si possono ottenere tutte le classi, i metodi e variabili marcati con una determinata annotazione. Potremo quindi effettuare delle operazioni su di essi!

Indice Lezione PrecedenteLezione Successiva

Pubblicato in Guide, Java, Programmazione Taggato con: , , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*