Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java反射找不到注释

我无法获取bean的注释,我正在使用spring框架:

可运行测试类:

public class Main {

    public static void main(String[] args) {
        PropertyDescriptor pd = BeanUtils.getPropertyDescriptor(Test.class,"foo");
        Method m=pd.getReadMethod();
        System.out.println(m.isAnnotationPresent(Annot.class));
    }

}

豆类

public class Test {

    private String foo;

        @Annot
        public String getFoo() {
            return foo;
        }

        public void setFoo(String foo) {
            this.foo = foo;
        }

    }

注释类:

public @interface Annot {

}

主类得到“false”作为输出。。。为什么


共 (1) 个答案

  1. # 1 楼答案

    您的批注缺少运行时保留策略

    执行以下操作:

    @Retention(RetentionPolicy.RUNTIME)
    public @interface Annot {
    
    }
    

    查看this那么,这个问题解释了默认策略及其作用。 为了汇总该答案中的信息,默认保留策略为CLASS,这意味着注释位于字节码中,但在加载类时不必保留