@Target Annotation seit Java 8

Die Meta-Annotation @java.lang.annotation.Target beschreibt, wo eine Annotation angeheftet werden kann. Ist kein ausdrückliches @Target gewählt, gilt es für alle Elemente, die Annotation kann also etwa an Klassen stehen, aber auch an lokalen Variablen. In der Regel gibt es bei @Target ein Element, und das ist von der Aufzählung java.lang.annotation.ElementType; es deklariert die folgenden Ziele:

ElementType

Erlaubt Annotationen …

ANNOTATION_TYPE

nur an anderen Annotationstypen, was @Target(ANNOTATION_TYPE) somit zu einer Meta-Annotation macht.

TYPE

an allen Typdeklarationen, also Klassen, Schnittstellen, Annotationstypen, Aufzählungen.

CONSTRUCTOR

an Konstruktor-Deklarationen

METHOD

an Deklarationen von statischen und nicht-statischen Methoden.

FIELD

an Deklarationen von statischen Variablen und Objekt-Variablen.

PARAMETER

an Parametervariablen von Methoden.

LOCAL_VARIABLE

an lokalen Variablen.

PACKAGE

an package-Deklarationen.

TYPE_PARAMETER

an der Deklaration einer Typ-Variablen für generische Typ-Parameter. Neu in Java 8. Wenn es etwa heißt class List<@AnAnnotation T>.

TYPE_USE

an allen Stellen, wo Typen eingesetzt werden, adressiert also Typ-Annotationen. Ebenfalls neu in Java 8. So etwas wie @NonNull (keine Annotation aus der Java SE!) ist ein Beispiel

Tabelle 1.3: ElementType bestimmt Orte, an denen Annotationen erlaubt sind.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert