javaseiten.de   |   Version 0.6
 

2.2. Definition von Annotationstypen

Die Deklaration eines Annotationstyps ist ähnlich der einer Interface-Deklaration. Zur Kennzeichnung einer Annotationstyp-Deklaration wird dem Schlüsselwort interface ein "@"-Zeichen vorangestellt. Als Beispiel soll der Annotationstyp Autor definiert werden, dabei werden die vordefinierten Meta-Annotationen @Documented, @Retention und @Target verwendet (siehe auch Abschnitt 2.4). Für die Definition wird eine Java-Quelltextdatei wie folgt erstellt:

Listing 2.1. Autor.java. Definition des Annotationstyps Autor.

/* 
 * Autor.java 
 * JDK 5
 *
 */ 

import java.lang.annotation.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Autor {
  int id();
  String name();
  String vorname();
}

Die Elemente des Annotationstyps Autor sind id, name und vorname. Ein Annotationstyp-Element kann mit Hilfe des Schlüsselwortes default mit einem Vorgabewert versehen werden. Die folgenden Zeilen würden für alle drei Elemente einen Vorgabewert festlegen:

int id()         default 1;
String name()    default "im Glueck";
String vorname() default "Hans";

Falls der Annotationtyp Autor mit den drei Default-Werten definiert wäre, wären die Annotationensangaben @Autor oder @Autor(id = 2, name = "Dampf") innerhalb eines Quellprogramms zulässig. Die in der Annotation nicht aufgeführten Element-Wert-Paare werden ergänzt und dabei wird der jeweilige Vorgabewert verwendet. An dieser Stelle soll noch kurz die zu Autor.java gehörende API-Dokumentation betrachtet werden. Sie kann mit der folgender Anweisung generiert werden:

> javadoc Autor.java

Ein Ausschnitt aus den erzeugten HTML-Dateien zeigt, dass die bei der Deklaration verwendeten Meta-Annotationen und die Elemente des Annotationstyps aufgeführt sind.

Abbildung 2.1. API-Dokumentation (Ausschnitt) von Autor.java.

javadocautorjava.jpg

Zunächst soll noch der weitere Annotationtyp (Marker-Annotationstyp) TestElement definiert werden, der später in einem Beispiellisting verwendet werden soll, um Methoden zu kennzeichnen.

Listing 2.2. TestElement.java. Definition des Annotationstyps TestElement.

/* 
 * TestElement.java 
 * JDK 5
 *
 */

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TestElement { }

 

 

 

Diese Seite nutzt Google-Dienste - siehe dazu Datenschutz.

Copyright © 2006, 2007 Harald Roeder