18 Reflection und Annotationen
»Aber wofür soll das gut sein?«
– Advanced Computing Systems Division von IBM zum Microchip, 1968
Das Reflection-Modell erlaubt es uns, Klassen und Objekte, die zur Laufzeit von der JVM im Speicher gehalten werden, zu untersuchen und in begrenztem Umfang zu modifizieren. Das Konzept der Reflection (oder auch Introspektion) ist besonders bei JavaBeans oder Hilfsprogrammen zum Debuggen oder bei GUI-Buildern interessant. Diese Programme heißen auch Metaprogramme, da sie auf den Klassen und Objekten anderer Programme operieren. Reflection fällt daher auch in die Schlagwortkategorie »Meta-Programming«.
18.1 Metadaten
Ein Metadatum ist eine Information über eine Information. In Java beschreibt ein Class-Objekt, was Typen wie Klassen so »können«, also welche Konstruktoren und Methoden sie haben, welche Attribute sie besitzen und wie die Erweiterungsbeziehungen sind.
18.1.1 Metadaten durch JavaDoc-Tags
Seit den ersten Java-Versionen gibt es die JavaDoc-Tags, die besondere Metadaten darstellen. So ist im folgenden Beispiel die Methode veraltet, weil das JavaDoc-Tag @deprecated gesetzt ist:
/**
* Sets the day of the month of this <tt>Date</tt>object to the specified value. ....
* @deprecated As of JDK version 1.1, replaced by ....
*/
@Deprecated
public void setDate( int date ) {
getCalendarDate().setDayOfMonth( date );
}
In diesem Fall gilt das JavaDoc-Tag für genau eine Methode, die dann als annotiert gilt. Die Beschreibungen können aber noch weiter gehen und müssen nicht nur auf Methodenebene bleiben. So annotiert das Tag @author den Autor und damit gleich eine ganze Klasse oder Schnittstelle.
Um die in Kommentaren eingesetzten JavaDoc-Tags muss sich der Java-Compiler nicht kümmern, obwohl er @deprecated eine Ausnahme zugesteht. Es ist Aufgabe des externen Programms javadoc – eines sogenannten Doclets –, aus diesen Kommentaren etwas zu machen, etwa eine Sammlung von verknüpften HTML-Dokumenten.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.