Reflektionsfrage - Dynamisch Klassen instanzieren - Annotations
Hallo zusammen,
ich schreibe zur Zeit an einem kleinen Programm, welches leicht erweiterbar sein soll.
Dem entsprechend muss ich manche Funktionen sehr dynamisch anlegen.
Damit Funktionen beschrieben werden können und ähnliches, habe ich mir eine RuntimeAnnotation angelegt, in welcher alle Informationen drin stehen, die ich auch bei der Verarbeitung benutze.
Da die Annotationklasse von der aufrufenden Klasse abhängig ist, muss ich diese auch dynamisch behandeln.
Dazu habe ich bis jetzt folgenden Code:
Jedoch in Zeile 8 bekomme ich eine Warnung, dass der Type nicht überprüft wird und in Zeile 10 gibt es folgenden Fehler: "Bound mismatch: The generic method getAnnotation(Class<T>) of type AnnotatedElement is not applicable for the arguments (Class<capture#5-of ?>). The inferred type capture#5-of ? is not a valid substitute for the bounded parameter <T extends Annotation>"
Meine Annotation-Klasse sieht bis jetzt wie folgt aus:
Woran kann das liegen bzw. wie kann ich das beheben?
Danke für eure Hilfe im Vorraus!
Hallo zusammen,
ich schreibe zur Zeit an einem kleinen Programm, welches leicht erweiterbar sein soll.
Dem entsprechend muss ich manche Funktionen sehr dynamisch anlegen.
Damit Funktionen beschrieben werden können und ähnliches, habe ich mir eine RuntimeAnnotation angelegt, in welcher alle Informationen drin stehen, die ich auch bei der Verarbeitung benutze.
Da die Annotationklasse von der aufrufenden Klasse abhängig ist, muss ich diese auch dynamisch behandeln.
Dazu habe ich bis jetzt folgenden Code:
Java:
String[] cmdMethNames = this.getAvailableCommandNames();
Class<?> annotationClass = Class.forName(this.annotationClassName);
for( Method meth : cmdMeth )
{
HashMap<String, String> tempAnno = new HashMap<String, String>();
if (meth.isAnnotationPresent((Class<? extends Annotation>) annotationClass))
{
Class<?> anno = (Class<?>) meth.getAnnotation(annotationClass);
[...]
}
[...]
}
Jedoch in Zeile 8 bekomme ich eine Warnung, dass der Type nicht überprüft wird und in Zeile 10 gibt es folgenden Fehler: "Bound mismatch: The generic method getAnnotation(Class<T>) of type AnnotatedElement is not applicable for the arguments (Class<capture#5-of ?>). The inferred type capture#5-of ? is not a valid substitute for the bounded parameter <T extends Annotation>"
Meine Annotation-Klasse sieht bis jetzt wie folgt aus:
Java:
@Retention( RetentionPolicy.RUNTIME )
public @interface ExtendedCommandAnnotation
{
String annoPropUseTab() default "0";
String annoPropStartTag() default "";
String annoPropEndTag() default "";
}
Woran kann das liegen bzw. wie kann ich das beheben?
Danke für eure Hilfe im Vorraus!
Zuletzt bearbeitet von einem Moderator: