Annotation-Parameter (Array) mit Konstante setzen?

DarthShader

Erfahrenes Mitglied
Hallo zusammen,

ich habe so einige Annotationen in meiner Klasse, deren Parameter sich ständig wiederholen. Das sieht z.B. so aus:

Java:
@OneToOne( cascade = { CascadeType.PERSIST, CascadeType.MERGE, 
		CascadeType.DETACH, CascadeType.REFRESH } )
private Person person;

(Es fehlt CascadeType.REMOVE, ich möchte also nicht .ALL verwenden)

Nun dachte ich, ich könnte mir im Klassenkopf eine Konstante definieren, die so aussieht:

Java:
private static final CascadeType[] CASCADE_TYPES = { CascadeType.PERSIST, 
    CascadeType.MERGE, CascadeType.DETACH, CascadeType.REFRESH };

Und dann alle Annotations-Parameter auf diese Konstante setzen, in etwa so:

Java:
@OneToOne( cascade = CASCADE_TYPES )
private Person person;

Leider geht dies nicht, der Compiler unterstreicht "CASCADE_TYPES" und meldet

Java:
The value for annotation attribute OneToOne.cascade must be an array initializer


Kann man dies nicht so vereinfachen, sondern muss immer direkt die Werte als Array angeben? Oder gibt es eine andere Möglichkeit, wie ich die ständige Wiederholung des Annotation-Parameters "cascade" vermeiden kann?
 
Hallo Sebastian,

hm, gerade der 2. Link, die Du geposted hast, erklärt wohl recht eindeutig, dass die Sprachdefinition soetwas nicht zulässt. Sehr schade, das hätte einiges an Boilderplate Code vermieden.
 
Zurück