clazz.getAnnotation(annoClazz);
clazz.isAnnotationPresent(annoClazz);
以上代码无法获取到注解,分析原因如下
注解上是否添加了Retention注解,并且value值为RetentionPolicy.RUNTIME
Retention注解
Retention(保留)注解说明,这种类型的注解会被保留到那个阶段. 有三个值:
- RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略
- RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略
- RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用.