Java Reference
In-Depth Information
! Retention.SOURCE: Die Annotation ist wie ein Kommentar nur im Quellcode vorhanden.
Solche Annotationen sind nur für Programme sinnvoll, die den Quellcode analysieren.
Annotationen können auch auf bestimmte Stellen (nur vor Klassen, nur vor Methoden usw.)
eingeschränkt werden; dies erfolgt ebenfalls über eine entsprechende Meta-Annotation:
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface SpecialClass
{
public String scope();
public int priority();
}
-------------------------------------------------------------------
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface SpecialField
{
public String name();
}
Die Meta-Annotation @Target defi niert, vor welchen Elementen die betreff ende Annotation
vorkommen darf. Mögliche Werte für @Target sind einer oder mehrere dieser Werte (meh-
rere Werte sind möglich, da @Target ein Feld solcher Werte akzeptiert):
! ElementType.ANNOTATION_TYPE: Meta-Annotation (d. h. Annotation darf vor einer
Annotation stehen)
! ElementType.CONSTRUCTOR: Annotation für Konstruktoren
! ElementType.FIELD: Annotation für Attribute
! ElementType.LOCAL_VARIABLE: Annotation für lokale Variable
! ElementType.METHOD: Annotation für Methoden
! ElementType.PACKAGE: Annotation für Packages
! ElementType.PARAMETER: Annotation für Parameter von Konstruktoren und Methoden
! ElementType.TYPE: Annotation für Klassen, Schnittstellen und Enumerations
Ist keine @Target-Annotation vorhanden, gibt es keine Einschränkung für das Vorkommen
der betreff enden Annotation.
Die oben defi nierte Annotation @SpecialClass ist eine Annotation, die vor Klassen, Schnitt-
stellen und Enumerations stehen darf, während die Annotation @SpecialField nur vor Attri-
buten vorkommen darf. Der folgende Code ist damit fehlerha :
@SpecialField(name="Class") //Syntaxfehler
public class AnnotatedClass
{
@SpecialClass(priority=19, scope="Field") //Syntaxfehler
public void m() {}
...
}
 
Search WWH ::




Custom Search