在将其标记为重复之前,请注意这是具体方案的非常具体的问题,我已经广泛搜索论坛以获得任何回答的线索。请确保在报告重复之前,在其他帖子中完全解决了此帖子中的查询。
我有以下情况:
带有RUNTIME保留plocy的注释
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD) //can use in fields only.
public @interface TestAnnotation{
public String id();
}
正在使用
public class TestBean{
@TestAnnotation(id="t1")
private String test1;
@TestAnnotation(id="t2")
private String test2;
}
现在在其他课程中,我正在尝试使用
获取注释值 for (PropertyDescriptor propDescriptor : Introspector.getBeanInfo(Class.forName("TestBean")).getPropertyDescriptors()) {
Class<?> propertyType = propDescriptor.getPropertyType();
TestAnnotation myAnno= propertyType.getAnnotation(TestAnnotation.class);
但myAnno的价值是空的。但是,如果我使用Class.forName("TestBean").getDeclaredFields()[1].getAnnotation(TestAnnotation.class)
;我能够获得价值。这意味着RUNTIME保留工作正在发挥作用。
我需要有关如何使用Bean Introspection获取注释的帮助。我不想使用getDeclaredFields
,所以请将其作为一种可能性。