Annotationen lasen sich setzen an allen Deklarationen und bei Typnutzungen (ab Java 8).
Deklarationen |
Typnutzung |
Typendeklarationen (Klassen, Schnittstellen, Aufzählungen, anderen Annotationtypen) |
new-Operator |
Eigenschaften (Konstruktoren, Methoden, Attributen) |
Typ-Anpassung |
implements-Klausel |
|
throws-Klausel bei Methoden |
Wo Annotationen möglich sind
Die Annotationen bei der Typnutzung nennen sich kurz Typ-Annotationen.
Java bringt einige Annotationstypen mit, doch die werden bisher ausschließlich für Deklarationen eingesetzt, wie das gekannte @Override. Vordefinierte Typ-Annotationen sind bisher in der Java SE nicht zu finden.
Die Annotationen bei der Typnutzung nennen sich kurz Typ-Annotationen.
Sie haben das erwähnt und geschrieben, dass es möglich ist, aber Java SE keine Verwendung dafür hat. Gibt es in der Praxis dafür irgendein Beispiel? Der Leser wäre dankbar ein (theoretisches, wenn auch vielleicht erdachtes) Beispiel dazu zu sehen.
Ausblick
Ein Beispiel für eine externe Bibliothek ist das Checker Framework (https://checkerframework.org/), was eine große Anzahl von Annotationstypen und ein Werkzeug zur Prüfung von Eigenschaften bereitstellt. Damit lässt sich zum Beispiel schreiben:
@NonNull Object ref = new Object();
public int compareTo(@NonNull String other) { … }
boolean lessThan(double[] arr1, double @SameLen(„#1“) [] arr2) { … }
Ein anderes Beispiel ist Beans Validation (https://beanvalidation.org/), mit dem sich zum Beispiel schreiben lässt:
Optional< @Past LocalDate> getBirthday() { … }
@Min(value = 18) @Max(value = 150) int age;