gpt4 book ai didi

Java:无法通过反射访问注释

转载 作者:IT老高 更新时间:2023-10-28 21:18:41 25 4
gpt4 key购买 nike

这是一个测试类:

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

public class TestAnnotations {

@interface Annotate{}

@Annotate public void myMethod(){}

public static void main(String[] args) {
try{
Method[] methods = TestAnnotations.class.getDeclaredMethods();
Method m = methods[1];
assert m.getName().equals("myMethod");

System.out.println("method inspected ? " + m.getName());
Annotation a = m.getAnnotation(Annotate.class);
System.out.println("annotation ? " + a);
System.out.println("annotations length ? "
+ m.getDeclaredAnnotations().length);
}
catch(Exception e){
e.printStackTrace();
}
}
}

这是我的输出:

method inspected ? myMethod
annotation : null
annotations length : 0

通过反射使注释可见我缺少什么?
即使只是检查它们的存在,我是否也需要注释处理器?

最佳答案

为了在运行时访问注解,它需要有一个运行时的保留策略。

@Retention(RetentionPolicy.RUNTIME) @interface Annotate {}

否则,注解将被删除,JVM 不知道它们。
如需更多信息,请参阅 here .

关于Java:无法通过反射访问注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2286998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com