0

在将其标记为重复之前,请注意这是具有特定场景的非常具体的问题,我已经在论坛上进行了广泛搜索以获取任何答案线索。在报告重复之前,请确保在其他线程中完全解决了这篇文章中的查询。

我有以下情况:

带有 RUNTIME 保留策略的注释

@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 的值是 Null。但是,如果我使用Class.forName("TestBean").getDeclaredFields()[1].getAnnotation(TestAnnotation.class); 我能够获得价值。这意味着 RUNTIME 保留正在工作。

我只需要关于如何使用 Bean Introspection 来获取注释的帮助。我不想使用getDeclaredFields,所以请把它作为一种可能性。

4

0 回答 0