Android
Anmerkungsprozessor
Suche…
Einführung
Anmerkungsprozessor ist ein in javac eingebautes Werkzeug zum Scannen und Bearbeiten von Anmerkungen zur Kompilierzeit.
Annotationen sind eine Klasse von Metadaten, die Klassen, Methoden, Feldern und sogar anderen Annotationen zugeordnet werden können. Es gibt zwei Möglichkeiten, auf diese Annotationen zur Laufzeit über Reflection und zur Kompilierungszeit über Annotationsprozessoren zuzugreifen.
@NonNull-Anmerkung
public class Foo {
private String name;
public Foo(@NonNull String name){...};
...
}
Hier ist @NonNull eine Anmerkung, die vom Android-Studio zur Kompilierzeit verarbeitet wird, um Sie darauf hinzuweisen, dass die jeweilige Funktion einen Nicht-Null-Parameter benötigt.
Arten von Anmerkungen
Es gibt drei Arten von Anmerkungen.
Markierungsanmerkung - Anmerkung, die keine Methode hat
@interface CustomAnnotation {}
Einzelwert-Annotation - Annotation mit einer Methode
@interface CustomAnnotation { int value(); }
Multi-Value-Annotation - Annotation mit mehr als einer Methode
@interface CustomAnnotation{ int value1(); String value2(); String value3(); }
Erstellen und Verwenden von benutzerdefinierten Anmerkungen
Um benutzerdefinierte Anmerkungen zu erstellen, müssen wir entscheiden
- Ziel - für das diese Anmerkungen auf Feldebene, Methodenebene, Typebene usw. funktionieren.
- Aufbewahrung - auf welcher Ebene wird die Annotation verfügbar sein.
Dafür haben wir benutzerdefinierte Annotationen eingebaut. Schauen Sie sich diese meist verwendeten an:
@Ziel
@Retention
Benutzerdefinierte Annotation erstellen
@Retention(RetentionPolicy.SOURCE) // will not be available in compiled class
@Target(ElementType.METHOD) // can be applied to methods only
@interface CustomAnnotation{
int value();
}
Benutzerdefinierte Annotation verwenden
class Foo{
@CustomAnnotation(value = 1) // will be used by an annotation processor
public void foo(){..}
}
Der in @CustomAnnotation
bereitgestellte @CustomAnnotation
wird von einem Anmerkungsprozessor verwendet, um Code zur Kompilierungszeit usw. zu generieren.