8. Oktober 2014 | 2 min lesezeit

Java 8 und Enterprise – Teil 4: Repeatable Annotations in Java EE

Unsere kleine Serie zum Thema Java 8 und Enterprise geht nun schon in die vierte Runde. Heute wollen wir das Java-8-Thema der „Repeatable Annotations“ näher betrachten und dessen Bedeutung für Java EE unter die Lupe nehmen.

Bis Java 7 war es nicht möglich, ein und dieselbe Annotation mehrfach an eine Klasse zu setzen, selbst wenn die Annotation mit verschiedenen Parametern gefüttert wurde.

Seit Java 8 hat sich das geändert. Gewisse Annotationen lassen sich mehrfach an Klassen, Felder oder Methoden setzen. Möglich macht das die Annotation @Repeatable und ein kleiner Compiler-Trick, der in Java 8 eingebaut wurde. Mit diesem Trick übernimmt in Java 8 der Compiler das, was in Java 7 der Entwickler von Hand machen muss, wie wir später sehen werden.

Mehrfach-Annotationen in Java EE

Wenn man in Java 7 oder früheren Versionen eine Annotation mehrfach an eine Klasse schreiben will, so benötigt man immer eine Wrapper-Annotation. Möchte man z. B. eine JPA-Entity mit mehr als einer @NamedQuery versehen, so muss man dazu die Wrapper-Annotation @NamedQueries verwenden. Diese kapselt ein Array von @NamedQuery-Annotations, wodurch es möglich wird, mehr als eine davon an eine Entity zu schreiben. Gleiches gilt für weitere Annotations im JPA-Standard.

Auch im BeanValidation-Standard werden solche Annotationen zur Verfügung gestellt. BeanValidation-Implementierungen erkennen die Annotationen sogar automatisch. Dadurch ist es möglich, auch für eigene Constraint-Annotations solche Wrapper-Annotations zu schreiben. Die BeanValidation-Spec schlägt dazu ein eigenes Pattern vor: Für jede Constraint-Annotation wird eine Annotation namens List als innere Klasse definiert, die als Wrapper-Annotation fungiert. Bei den Constraint-Annotations, die von der Spezifikation mitgeliefert werden (wie @NotNull, @Min, @Max usw.), wurde dieses Pattern auch angewendet. Bei selbstdefinierten Constraints empfiehlt sich die Verwendung des Patterns ebenfalls (Listing 1).

Listing 1


Keine Kommentare

Kontakt

OPEN KNOWLEDGE GmbH

Standort Oldenburg:
Poststraße 1, 26122 Oldenburg

Standort Essen:
II. Hagen 7, 45127 Essen