Annotations - Neuerung der J2SE 5

Gewichtige Anmerkungen

Dirk Frischalowski

Annotations sind eine der Neuerungen der J2SE 5. Sie werden häufig auch als Metadaten bezeichnet. Sie dienen aber nicht nur der Vergrößerung Ihres Quelltextes, sondern können mittels Reflection, dem apt-Tool oder anderer Mechanismen durch Anwendungen ausgewertet werden. Anwendungsgebiete sind z.B. die automatisierte Erzeugung von Quellcode, z.B. Stubs, oder die Möglichkeit, Projektinformationen zu sammeln.

Annotations können für Variablen, Methoden, deren Parameter, Aufzählungen, Interfaces, Klassen und Packages eingesetzt werden. Der Vorteil von Annotations gegenüber anderen Möglichkeiten der Bereitstellung von Informationen liegt in der fest definierten Funktionsweise und den Zugriffsmöglichkeiten über ein API. Über Annotations erhalten Sie einen Mechanismus, um zukünftig Informationen zur automatisierten Auswertung weiterzugeben. Im Listing 1 wird die Verwendung der vordefinierten Annotation deprecated gezeigt. Diese kennzeichnet z.B. eine Klasse oder Methode als veraltet. Als deprecated markierte Methoden sollten nicht mehr in Anwendungen verwendet werden. Der Compiler (in diesem Fall die externe Anwendung) erzeugt eine Warnung beim Übersetzen. Beachten Sie, dass zum Übersetzen die Option -source 1.5 beim Kompilieren angegeben werden muss, z.B. javac -source 1.5 RufeVeraltet.java.

import java.lang.reflect.*;
import java.lang.annotation.*;

public class TodoAnnotationTest
{
  @Todo(beschreibung={"Erste Versuche mit Annotations"},
        klasse=TodoAnnotationTest.class,
        wertigkeit=3
        bem=@Bemerkung("keine"))
  public boolean berechne()
  {
    return false;
  }
  public static void main(String args[])
  {
    Method[] methoden = TodoAnnotationTest.class.getMethods();
    for(Method m: methoden)
    {
      if(m.isAnnotationPresent(Todo.class))
      {
        System.out.println("Methode " + m.getName());
       System.out.println("-----------------------");
      Todo td = m.getAnnotation(Todo.class);
        System.out.println(td.beschreibung()[0]);
        System.out.println(td.klasse().getName());
       System.out.println(td.wertigkeit());
        System.out.println(td.bem().value());
      }
    }
  }
}

Annotations werden in Zukunft eine große Rolle bei der dynamischen Generierung von Java-Quellcode spielen. Durch die einfache Beschreibung der benötigten Informationen über Annotations wird sich der Aufwand auf der Entwicklerseite verringern, weniger fehleranfällig und besser lesbar werden. Beachten Sie aber, dass weder die Java-Quelltexte noch die class-Dateien kompatibel mit älteren Versionen sind.Dirk Frischalowski arbeitet als Selbstständiger im Bereich der Anwendungsentwicklung mit Delphi, Java und .NET. Weitere Schwerpunkte sind das Schreiben von Artikeln und Softwaredokumentationen, Vorträge auf verschiedenen Veranstaltungen sowie die Durchführung von Schulungen und Consulting.Links und Literatur[1] jcp.org/aboutJava/communityprocess/review/jsr175/[2] java.sun.com/developer/technicalArticles/releases/j2se15/

Geschrieben von
Dirk Frischalowski
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.