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或其他使用反射机制的代码所读取和使用.

确保加载注解注释类与注解类的classloader一致,因为判断是否是一个类的标准中包含是否是同一classloader加载的