Java Annotation - 使用Bean introspector访问私有字段上的注释(不使用Field对象)

时间:2017-06-12 20:27:15

标签: java java-annotations

在将其标记为重复之前,请注意这是具体方案的非常具体的问题,我已经广泛搜索论坛以获得任何回答的线索。请确保在报告重复之前,在其他帖子中完全解决了此帖子中的查询。

我有以下情况:

带有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,所以请将其作为一种可能性。

0 个答案:

没有答案