Android
Procesor adnotacji
Szukaj…
Wprowadzenie
Procesor adnotacji to narzędzie wbudowane w javac do skanowania i przetwarzania adnotacji w czasie kompilacji.
Adnotacje to klasa metadanych, które można powiązać z klasami, metodami, polami, a nawet innymi adnotacjami. Istnieją dwa sposoby dostępu do tych adnotacji w czasie wykonywania przez odbicie i w czasie kompilacji za pomocą procesorów adnotacji.
@NonNull Adnotation
public class Foo {
private String name;
public Foo(@NonNull String name){...};
...
}
Tutaj @NonNull to adnotacja, która jest przetwarzana przez czas kompilacji przez studio Android, aby ostrzec, że dana funkcja wymaga parametru o wartości null.
Rodzaje adnotacji
Istnieją trzy rodzaje adnotacji.
Adnotacja znacznika - adnotacja bez metody
@interface CustomAnnotation {}
Adnotacja o pojedynczej wartości - adnotacja, która ma jedną metodę
@interface CustomAnnotation { int value(); }
Adnotacja wielowartościowa - adnotacja, która ma więcej niż jedną metodę
@interface CustomAnnotation{ int value1(); String value2(); String value3(); }
Tworzenie i używanie własnych adnotacji
Aby utworzyć niestandardowe adnotacje, musimy zdecydować
- Cel - na którym te adnotacje będą działały na poziomie pola, poziomie metody, poziomie typu itp.
- Przechowywanie - do jakiego poziomu adnotacje będą dostępne.
W tym celu wbudowaliśmy niestandardowe adnotacje. Sprawdź te najczęściej używane:
@Cel
@Zatrzymywanie
Tworzenie niestandardowej adnotacji
@Retention(RetentionPolicy.SOURCE) // will not be available in compiled class
@Target(ElementType.METHOD) // can be applied to methods only
@interface CustomAnnotation{
int value();
}
Korzystanie z adnotacji niestandardowych
class Foo{
@CustomAnnotation(value = 1) // will be used by an annotation processor
public void foo(){..}
}
wartość podana w @CustomAnnotation
zostanie wykorzystana przez @CustomAnnotation
adnotacji może być do wygenerowania kodu w czasie kompilacji itp.