Java Reference
In-Depth Information
In der Deklaration von @Special sind scope und priority wie Methoden defi niert. Bei der
Nutzung muss ihnen aber wie Attributen ein zum Rückgabetyp passender Wert zugewiesen
werden. Die folgende Zeile ist z. B. ein Syntaxfehler, da priority einen Wert des Typs int
verlangt:
@Special(scope="Class", priority="2") //Syntaxfehler
Die Fehlermeldung des Compilers ist so, wie wenn man eine Methode, die ein Argument des
Typs int erwartet, mit einem String aufru . Die Reihenfolge von scope und priority ist aber
im Vergleich zu den Parametern bei einem Methodenaufruf beliebig, wie oben im Beispiel
schon zu sehen ist. Es darf aber keines der Attribute fehlen. Diese Verwendung der Annota-
tion @Special führt zu einem Syntaxfehler:
@Special(scope="Class") //Syntaxfehler
Falls es nur einen Parameter gibt und dieser value heißt, kann der Name des Parameters
weggelassen werden (muss aber nicht):
public @interface Special
{
public String value();
}
-------------------------------------------------------------------
@Special("Class")
public class AnnotatedClass
{
@Special(value="Field")
private int i;
...
}
Als Rückgabetyp für die Methoden einer Annotation sind auch Felder möglich. Wie für
andere Annotationen kann der Methodenname auch bei Feldern beliebig gewählt werden;
der Name value ist nicht nötig, aber auch in diesem Fall möglich:
public @interface Special
{
public String[] value();
}
-------------------------------------------------------------------
@Special({"Class"})
public class AnnotatedClass
{
@Special("Field")
private int i;
@Special({"Field", "private", "String", "s"})
private String s;
...
}
Wie dem Beispiel entnommen werden kann, müssen bei der Angabe von mehr als einem
Element die Elemente in geschwei en Klammern eingeschlossen sein. Bei einem Argument
kann man die geschwei en Klammern ebenfalls angeben; man muss es aber nicht.
 
Search WWH ::




Custom Search