我有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。
请注意,这也适用于字段和方法。