Java How To
 


Definition von Annotationen

How To ...

Wie werden Annotationen definiert?

Hintergründe

Annotationen sind Interfaces mit einer in Java 5.0 eingeführten Syntaxerweiterung.

So geht's

Annotationen sind syntaktisch „fast” Interfaces. Vor das Schlüsselwort interface wird das @-Symbol gesetzt. Mit der Annotation @Target wird festgelegt, für welche Art von Programmelement die Anwendung der Annotation erlaubt ist. Mit der Annotation @Retention wird der Gültigkeitsbereich der Annotation festgelegt.

Mögliche Werte für @Target sind die Elemente der Enumeration java.lang.annotation.ElementType:

Wert Bedeutung
ANNOTATION_TYPE Zur Verwendung bei Annotationen
CONSTRUCTOR Zur Verwendung bei Konstruktoren
FIELD Zur Verwendung bei Instanzvariablen und Enum-Konstanten
LOCAL_VARIABLE Zur Verwendung bei lokalen Variablen
METHOD Zur Verwendung bei Methoden
PACKAGE Zur Verwendung bei Packages
PARAMETER Zur Verwendung bei Parametern
TYPE Zur Verwendung bei Klassen, Interfaces und Enums

Mögliche Werte für @Retention sind die Elemente der Enumeration java.lang.annotation.RetentionPolicy:

Wert Bedeutung
CLASS Annotation ist im Byte-Code enthalten muss aber durch die JVM nicht verfügbar sein
RUNTIME Annotation ist im Byte-Code enthalten und durch die JVM (Reflection) verfügbar
SOURCE Annotation wird durch den Compiler gelöscht.

Als Beispiel geben wird die Definition der @Entity-Annotation der JPA/EJB-Spezifikation wieder:

  package javax.persistence;

  import java.lang.annotation.Target;
  import java.lang.annotation.Retention;
  import static java.lang.annotation.ElementType.TYPE;
  import static java.lang.annotation.RetentionPolicy.RUNTIME;

  @Target(TYPE)
  @Retention(RUNTIME)

  public @interface Entity {

      String name() default "";
      
  }
		

Die Verwendung der Annotation ist bei Klassen, Interfaces und Enums erlaubt. Die Annotation ist zur Laufzeit als Meta-Information verfügbar.