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.

  1. Markierungsanmerkung - Anmerkung, die keine Methode hat

    @interface CustomAnnotation {}
    
  1. Einzelwert-Annotation - Annotation mit einer Methode

    @interface CustomAnnotation {  
        int value();  
    }
    
  1. 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

Ziel und was es bedeutet

@Retention

Zurückhaltung und was es bedeutet

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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow