Annotations

continue

Aktives Mitglied
Hallo,
Ich lese gerade ein Tutorial zu Java Annotations.
Dort wird folgende Annotation erzeugt:

Java:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

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

  int min();
  int max();
  int start() default 1;
}

dann wird die Annotation in einer Klasse Point angewandt:
Java:
public class Point {

  private int x, y;

  @IntegerSetter(min = 0, max = 5)
  public void setX(int x) {
    this.x = x;
  }

  @IntegerSetter(min = 0, max = 20, start = 5)
  public void setY(int y) {
    this.y = y;
  }
}

jetzt frag ich mich, da der Sinn der Annotation wohl darin besteht den Parameter der den annotierten Methoden übergeben wird zu beschränken frage ich mich wie das vonstatten geht? wie beschränke ich den parameter nun? oder ist die sinnhaftigkeit eine andere?
 
S

SlaterB

Gast
Java Blog Buch : 06.04 Annotation

@IntegerSetter
scheint dort nur ein Beispiel,
Annotations sind nicht mehr als 'Dinge', die man zur Methode notieren und später wieder auslesen kann,
von alleine machen sie nix, prüfen etwa nicht die Argumente der Methodenaufrufe
(sofern nicht der Java-Compiler das unterstützt/ anbietet, und dann global entsprechende Tests einbaut, wäre technisch sicher denkbar),

aber wenn man selber z.B. ein Framework hat, dass für beliebige Klassen automatisch die enthaltenen Attribute bestimmt und ein passendes GUI-Eingabe-Fenster zusammenstellt,
dann könnte man dank der Information aus der selber definierten Annotation das zugehörige Eingabe-Textfeld auf die Min-Max-Werte begrenzen,
mit fleißigen Code, Annotation auslesen, Textfeld entsprechend konfigurieren
 
Zuletzt bearbeitet von einem Moderator:

continue

Aktives Mitglied
hmmm ah okay die dinger sind also nur dazu da um metainformation anzugeben.
Wenn man was damit anfangen will muss man es auslesen und könnte so zum beispiel im obigem beispiel den parameterwert auf min und max begrenzen. Sowas wäre aber ziehmlich umständlich, da das mit normalem code ja viel "unkomplizierter" geht.?!?!
Könntest mir ein einfaches Beispiel zeigen, dass die (sinnvolle) Anwendung von Annotations domonstriert.... Weil in dem Min-Max Beispiel könnte ich genausogut einfach einen kommentar dazuschreiben wenn ich sowieso nur klar(er) machen weill dass das das erlaubte intervall ist......
 
S

SlaterB

Gast
eine Annotation ist im Gegensatz zum Kommentar später wieder auslesbar und einigermaßen strukturiert,
für mein Beispiel mit dem GUI-Framework ginge es kaum anders, die normale Alternative ist eine separate strukturierte Beschreibung,
z.B. eine XML-Datei

und das Produktiv-Standardbeispiel ist das Mapping von Hibernate, eine Java-Klasse mit der zugehörigen Datenbank-Tabelle verknüpfen, welches Java-Feld gehört zu welchem DB-Feld mit welchem Datentyp usw.,
das Hibernate-Framework liest die Informationen aus und verarbeitet sie entsprechend,

die Informationen stehen entweder in einer separaten XML-Datei
Objektrelationales Mapping (O/R-M) mit Hibernate
oder per Annotations direkt in der Klasse
An Introduction to Hibernate 3 Annotations - O'Reilly Media

------

noch einfacher sind die Annotations, die der Java-Compiler ausliest,
z.B.
@Override
an überschriebenen Methoden,
der Compiler überprüft, ob diese Angabe wirklich wahr ist, und kann dann nix tun, eine Warning oder einen Error ausgeben,
je nach Einstellung
 

Ähnliche Java Themen


Oben