sebastianb
Erfahrenes Mitglied
hi Zusammen,
leider habe ich gerade ein seltsames Problem mit zwei eigenen Annotations
leider zeigt Mir Eclipse nun in der Annotation "ForceLazyInitialization ein Fehler bei "setterType = DEFAULT_SETTER_TYPE" an => "The value for annotation attribute SetterInformation.setterType must be a class literal". Gebe ich jedoch direkt "void.class" an und nicht das statisch Feld an funktioniert es. Das andere statische Feld nimmt er aber ohne Probleme.
Der Grund warum ich das Ganze auf zwei Annotations aufteile liegt daran, dass entweder gar kein Wert oder beide (SetterName und SetterType) gesetzt werden müssen:
Gruß S.
leider habe ich gerade ein seltsames Problem mit zwei eigenen Annotations
Java:
import static de.hfu.brauns.thesis.testumgebung.commons.annotations.SetterInformation.DEFAULT_SETTER_NAME;
import static de.hfu.brauns.thesis.testumgebung.commons.annotations.SetterInformation.DEFAULT_SETTER_TYPE;
@Target(java.lang.annotation.ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ForceLazyInitialization
{
SetterInformation setterInformation() default @SetterInformation(setterName = DEFAULT_SETTER_NAME, setterType = DEFAULT_SETTER_TYPE);
}
Java:
@Target(METHOD)
@Retention(RUNTIME)
public @interface SetterInformation
{
public final static String DEFAULT_SETTER_NAME = "DEF";
public final static Class<?> DEFAULT_SETTER_TYPE = void.class;
public String setterName();
public Class<?> setterType();
}
leider zeigt Mir Eclipse nun in der Annotation "ForceLazyInitialization ein Fehler bei "setterType = DEFAULT_SETTER_TYPE" an => "The value for annotation attribute SetterInformation.setterType must be a class literal". Gebe ich jedoch direkt "void.class" an und nicht das statisch Feld an funktioniert es. Das andere statische Feld nimmt er aber ohne Probleme.
Der Grund warum ich das Ganze auf zwei Annotations aufteile liegt daran, dass entweder gar kein Wert oder beide (SetterName und SetterType) gesetzt werden müssen:
Java:
@ForceLazyInitialization(setterInformation=@SetterInformation(setterName="SetName",setterType=String.class))
//oder so:
@ForceLazyInitialization()
Gruß S.