2013-08-19 7 views
6

Kann der einfache Name einer Klasse in einer Anmerkung verwendet werden? Mein Ziel ist es, Kompilierzeitsicherheit für Injektionen mit JNDI-Namen zu erhalten, die die Klasse enthalten.Java-Klassenname als Anmerkungsattribut

Beispiel (von dem, was ich tun möchte, dies bei der Kompilierung fehlschlägt):

@EJB(mappedName = "java:module/" + MyService.class.getSimpleName()) 
private MyService myService; 

class.getSimpleName() scheint zur Laufzeit aufgelöst zu werden, was nicht mit Anmerkungen funktioniert. Kann ich es irgendwie als Konstante verstehen?

Antwort

0

Nicht möglich, wie Sie es haben. Es kann mit AOP-Techniken gemacht werden. Aber,

In diesem Stück Code scheinen Sie nur einen möglichen Wert nämlich "MyService" zu haben. Es wird sich nicht dynamisch ändern, also warum möchten Sie es dynamisch auswerten?

+3

Wenn ich diese Klasse irgendwann umbenenne, würde ich gerne Zeit Sicherheit kompilieren. Eine Zeichenfolge müsste manuell geändert werden, während ein Verweis auf den Klassennamen entweder automatisch neu erstellt wird oder einen Kompilierungszeitgeberfehler verursacht. –

Verwandte Themen