Android
Processore di annotazione
Ricerca…
introduzione
Il processore di annotazione è uno strumento creato in javac per la scansione e l'elaborazione delle annotazioni in fase di compilazione.
Le annotazioni sono una classe di metadati che possono essere associati a classi, metodi, campi e persino altre annotazioni. Esistono due modi per accedere a queste annotazioni in fase di runtime tramite riflessione e in fase di compilazione tramite i processori di annotazione.
@NonNull Annotazione
public class Foo {
private String name;
public Foo(@NonNull String name){...};
...
}
Qui @NonNull è un'annotazione che viene elaborata dal tempo di compilazione da parte di Android Studio per avvertirti che la particolare funzione ha bisogno di un parametro non nullo.
Tipi di annotazioni
Esistono tre tipi di annotazioni.
Annotazione marcatore : annotazione senza metodo
@interface CustomAnnotation {}
Annotazione a valore singolo - annotazione con un metodo
@interface CustomAnnotation { int value(); }
Annotazione a più valori : annotazione con più di un metodo
@interface CustomAnnotation{ int value1(); String value2(); String value3(); }
Creazione e utilizzo di annotazioni personalizzate
Per creare annotazioni personalizzate dobbiamo decidere
- Target - su cui queste annotazioni funzioneranno come il livello del campo, il livello del metodo, il livello del tipo ecc.
- Conservazione - a quale livello di annotazione sarà disponibile.
Per questo, abbiamo creato annotazioni personalizzate. Dai un'occhiata a quelli usati principalmente:
@Bersaglio
@Ritenzione
Creazione di annotazioni personalizzate
@Retention(RetentionPolicy.SOURCE) // will not be available in compiled class
@Target(ElementType.METHOD) // can be applied to methods only
@interface CustomAnnotation{
int value();
}
Utilizzo di annotazioni personalizzate
class Foo{
@CustomAnnotation(value = 1) // will be used by an annotation processor
public void foo(){..}
}
il valore fornito in @CustomAnnotation
verrà utilizzato da un processo di annotazione per generare codice in fase di compilazione, ecc.