Android
Annotationsprocessor
Sök…
Introduktion
Annotationsprocessor är ett verktyg inbyggt javac för skanning och bearbetning av kommentarer vid sammanställningstid.
Anteckningar är en klass metadata som kan associeras med klasser, metoder, fält och till och med andra kommentarer. Det finns två sätt att få tillgång till dessa anteckningar under körning via reflektion och vid sammanställningstid via annotationsprocessorer.
@NonNull Annotation
public class Foo {
private String name;
public Foo(@NonNull String name){...};
...
}
Här @NonNull är en kommentar som bearbetas kompileringstid av Android-studion för att varna dig för att den specifika funktionen behöver inte null-parameter.
Typer av kommentarer
Det finns tre typer av anteckningar.
Marker Annotation - annotation som inte har någon metod
@interface CustomAnnotation {}
Enkelvärdesanteckning - kommentar som har en metod
@interface CustomAnnotation { int value(); }
Multi-Value Annotation - annotation som har mer än en metod
@interface CustomAnnotation{ int value1(); String value2(); String value3(); }
Skapa och använda anpassade kommentarer
För att skapa anpassade kommentarer måste vi bestämma
- Mål - som dessa kommentarer kommer att fungera på som fältnivå, metodnivå, typnivå etc.
- Förvaring - till vilken nivåanteckning kommer att finnas tillgänglig.
För detta har vi inbyggda anpassade kommentarer. Kolla in de mest använda:
@Mål
@Bibehållande
Skapa anpassad kommentar
@Retention(RetentionPolicy.SOURCE) // will not be available in compiled class
@Target(ElementType.METHOD) // can be applied to methods only
@interface CustomAnnotation{
int value();
}
Använda anpassad kommentar
class Foo{
@CustomAnnotation(value = 1) // will be used by an annotation processor
public void foo(){..}
}
värdet som tillhandahålls i @CustomAnnotation
kommer att konsumeras av en annotationsprocessor kan vara att generera kod vid sammanställningstid etc.