我有2种Java注释类型,比如说XA和YA。两者都有一些method()。我解析源代码并检索Annotation对象。现在,我想将注解动态转换为它的真实类型,以便能够调用method()。没有instanceof语句怎么办?我真的想避免使用类似开关的源代码。我需要这样的东西:

Annotation annotation = getAnnotation(); // I recieve the Annotation object here
String annotationType = annotation.annotationType().getName();

?_? myAnnotation = (Class.forName(annotationType)) annotation;
annotation.method(); // this is what I need, get the method() called

__表示我不知道myAnnotation类型是什么。我不能将基类用于XA和YA批注,因为不允许在批注中进行继承。还是有可能以某种方式做?

感谢您的任何建议或帮助。

最佳答案

为什么不使用类型安全的方法来检索注释?

final YourAnnotationType annotation = classType.getAnnotation(YourAnnotationType.class);
annotation.yourMethod();

如果找不到您的注释,则返回null。

请注意,这也适用于字段和方法。

10-08 15:47