Android
Annotatieprocessor
Zoeken…
Invoering
Annotatieprocessor is een in javac ingebouwde tool voor het scannen en verwerken van annotaties tijdens het compileren.
Annotaties zijn een klasse metagegevens die kunnen worden gekoppeld aan klassen, methoden, velden en zelfs andere annotaties. Er zijn twee manieren om toegang te krijgen tot deze annotaties tijdens runtime via reflectie en tijdens het compileren via annotatieprocessors.
@NonNull annotatie
public class Foo {
private String name;
public Foo(@NonNull String name){...};
...
}
Hier is @NonNull een annotatie die tijdens de compilatietijd door de android studio wordt verwerkt om u te waarschuwen dat de betreffende functie een niet-nul-parameter nodig heeft.
Soorten annotaties
Er zijn drie soorten annotaties.
Marker Annotation - annotatie zonder methode
@interface CustomAnnotation {}
Annotatie met één waarde - annotatie met één methode
@interface CustomAnnotation { int value(); }
Multi-waarde annotatie - annotatie met meer dan één methode
@interface CustomAnnotation{ int value1(); String value2(); String value3(); }
Aangepaste annotaties maken en gebruiken
Voor het maken van aangepaste annotaties moeten we beslissen
- Doel - waarop deze annotaties werken, zoals veldniveau, methode niveau, type niveau etc.
- Retentie - tot welk niveau annotatie beschikbaar zal zijn.
Hiervoor hebben we aangepaste annotaties ingebouwd. Bekijk deze meestal gebruikte:
@Doelwit
@Retention
Aangepaste annotatie maken
@Retention(RetentionPolicy.SOURCE) // will not be available in compiled class
@Target(ElementType.METHOD) // can be applied to methods only
@interface CustomAnnotation{
int value();
}
Aangepaste annotatie gebruiken
class Foo{
@CustomAnnotation(value = 1) // will be used by an annotation processor
public void foo(){..}
}
de waarde die in @CustomAnnotation
wordt verstrekt, wordt door een Annotationprocessor gebruikt om code te genereren tijdens het compileren, enz.