Java Reference
In-Depth Information
Wie bei der Deklaration der Annotationen @SpecialClass und @SpecialField zu sehen ist,
kann vor einem annotierten Element (Klasse, Methode oder Annotation) mehr als eine
Annotation stehen (im Beispiel sind die Annotationen @SpecialClass und @SpecialField mit
den Annotationen @Retention und @Target versehen). Dieses Mehrfachvorkommen von
Annotationen gilt nicht nur für Meta-Annotationen, sondern allgemein für alle Annotatio-
nen. Es ist allerdings nicht möglich, dass dieselbe Annotation vor demselben Element mehr-
fach vorkommt, ganz gleich, ob die Attributwerte dieselben oder unterschiedlich sind:
@SpecialClass(priority=1, scope="Class") //Syntaxfehler
@SpecialClass(priority=2, scope="Class") //Syntaxfehler
public class AnnotatedClass
{
...
}
Zwei weitere Meta-Annotationen aus dem Package java.lang.annotation sind:
! @Documented: Die mit dieser Meta-Annotation gekennzeichneten Annotationen werden,
wenn sie vorkommen, von Javadoc in die generierten HTML-Dateien übernommen.
! @Inherited: Die mit dieser Meta-Annotation gekennzeichneten Annotationen werden ver-
erbt. Wenn eine Basisklasse mit einer solchen Annotation gekennzeichnet ist, dann wird
diese Annotation in die abgeleitete Klasse übernommen.
3 . 3 Regeln für Annotationsdeklarationen
Allgemein gilt für die Deklaration von Annotationen:
! Die Methoden dürfen keine Parameter haben.
! Die Methoden dürfen nicht mit throws versehen sein.
! Als Rückgabetyp der Methoden sind nur erlaubt: alle primitiven Datentypen (wie int,
short und long), String, Class, Enumerations, andere Annotationen sowie eindimensio-
nale Felder der zuvor genannten Typen.
Der Fall, dass der Rückgabetyp einer Annotationsmethode eine andere Annotation ist, ist
vielleicht nicht so ganz naheliegend. Wir geben deshalb ein Beispiel dafür an:
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface AnnotationParameter
{
public boolean value();
@Retention(RetentionPolicy.RUNTIME)
@interface AnnotationExample
{
public String stringParam();
 
Search WWH ::




Custom Search