我无法获取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));
}
}
Bean 类;
public class Test {
private String foo;
@Annot
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}
注解类:
public @interface Annot {
}
主类得到“false”作为输出...为什么?
最佳答案
您的注释缺少运行时保留策略。
执行以下操作:
@Retention(RetentionPolicy.RUNTIME)
public @interface Annot {
}
查看this SO 问题解释了默认策略及其作用。
总结该答案中的信息,默认保留策略是CLASS
,这意味着注释位于字节码中,但在加载类时不必保留
关于java - 反射找不到注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23885342/