javaseiten.de   |   Version 0.6
 

2.1. Grundlagen

Der Zweck einer Annotation ist es, für ein bestimmtes Programmelement wie z.B. einer Methode oder einer Klasse, zusätzliche Informationen (Metadaten) bereitzustellen. Eine Annotation kann als zusätzlicher Modifikator angesehen werden. Er besteht aus der Namensbezeichnung des Annotationstyps und kann in einem anschließenden Klammerpaar mehrere Element-Wert-Paare enthalten. Für einen Annotationstyp können verschiedene Elemente definiert werden, die mit entsprechenden Werten belegt werden können. Annotationen beginnen mit einem "@"-Zeichen, um diese als solche zu kennzeichnen. Zunächst soll aber der vordefinierte Annotationstyp Deprecated beispielhaft genannt werden, der überholte (veraltete) Methoden kennzeichnet:

@Deprecated public void ueberholteMethode() {
  ...
}

Es wird vorgeschlagen, dass Annotationen vor allen anderen Modifikatoren stehen sollten. Das ist aber nicht zwingend notwendig, auch die Modifaktorenreihenfolge public @Deprecated wäre zulässig. Eine Annotation hat den folgenden allgemeinen Aufbau:

@TypName(ElementWertPaare_opt)

Ein Beispiel hierfür mit drei Element-Wert-Paaren wäre:

@TypName(Identifier1 = ElementWert1, 
         Identifier2 = ElementWert2, 
         Identifier3 = ElementWert3)

Die Angabe von Element-Wert-Paaren ist optional und kann daher weggelassen werden. Das resultierende leere Klammerpaar könnte auch entfallen. So wäre die Bedeutung der folgenden beiden Angaben gleich:

@TypName()
@TypName

Derartige Annotationen ohne Element-Wert-Paare werden als Marker-Annotationen bezeichnet. Besitzt ein Annotationtyp hingegen nur ein einziges Element, sollte der Name (Identifier) des Solo-Elements value sein (Konvention). Bei solchen Single-Element-Annotationen kann auch eine vereifachte Notation angewendet werden. Die beiden folgenden Annotationsangaben wären gleichbedeutend:

@TypName(value = ElementWert)
@TypName(ElementWert)

Annotationen können wiederum bei anderen Annotationstyp-Deklarationen verwendet werden - sie werden dann auch als Meta-Annotationen bezeichnet.

 

Überblick über vordefinierte Annotationstypen

Ab Java SE 5 werden mehrere Annotationstypen standardmäßig zur Verfügung gestellt, die zunächst kurz erläutert werden sollen (eine ausführlichere Darstellung steht in Abschnitt 2.4):

  • Annotationstyp Deprecated. Ein Programmelement, das mit @Deprecated gekennzeichnet wurde, sollte bei der Programmerstellung nicht mehr verwendet werden, da es in Folgeversionen möglicherweise nicht mehr verfügbar sein wird oder es sollen alternativ andere Programmelemente genutzt werden. Der Compiler gibt eine Warnmeldung aus, falls ein derart gekennzeichnetes Programmelement verwendet wurde.

  • Annotationstyp Override. Mit @Override kann eine Methode gekennzeichnet werden, die verbindlich die Methode ihrer Oberklasse überschreibt. Falls die Superklassen-Methode nicht überschrieben wird, erzeugt der Compiler eine Fehlermeldung.

  • Annotationstyp SuppressWarnings. Bei Verwedung dieses Annotationstyps bei bestimmten Programmelementen, werden eventuell erzeugte Warnmeldungen unterdrückt. Um festzulegen, welche Warnmeldungen unterdrückt werden sollen, wird der Annotation ein String-Array als Argument übergeben. Das String-Array enthält die einzelnen Namensbezeichnungen der zu unterdrückenden Warnungen.

  • Meta-Annotationstyp Documented. Die Annotation @Documented wird innerhalb von Definitionen weiterer Annotationstypen verwendet (Meta-Annotation). Falls innerhalb einer Annotationstyp-Deklaration @Documented verwendet wird, erscheint die dadurch definierte Annotation innerhalb der API-Dokumentation des verwendenden Programms (eine API-Dokumetation kann durch Verwendung von javadoc erstellt werden).

  • Meta-Annotationstyp Inherited. Dieser Annotationstyp wird ebenfalls innerhalb von Definitionen weiterer Annotationstypen verwendet (Meta-Annotation). Eine unter Verwendung von @Inherited erstellten Annotation kann eine Klasse annotieren. Falls diese Klasse vererbt wird, wird auch die genannte Annotation mit vererbt.

  • Meta-Annotationstyp Target. Eine Target-Meta-Annotation wird bei der Definition von Annotationen verwendet. @Target bestimmt für welche Programmelemente die neu erstellte Annotation verwendet werden darf. Dazu können der Meta-Annotation verschieden Konstanten als Argument übergeben werden.

  • Meta-Annotationstyp Retention. Der Annotationstyp Retention (dt. Aufrechterhaltung) bestimmt wie lange Annotationen, bei deren Definition dieser Typ verwendet wurde, aufrecht erhalten werden (Zugriff auf Annotationen möglich). Dabei können der Meta-Annotation verschiedene Konstanten als Argument übergeben werden, die bestimmen, ob die Annotation eventuell auch während der Laufzeit der Anwendung augelesen werden kann.

 

 

 

Diese Seite nutzt Google-Dienste - siehe dazu Datenschutz.

Copyright © 2006, 2007 Harald Roeder