Java反射:类注释在运行时意外返回null

Java反射:类注释在运行时意外返回null,java,reflection,Java,Reflection,我试图在运行时向类动态添加注释,如下面的问题所示: 但是,“annotations”字段返回空值。事实上,根据调试器,除了“declaredFields”和“name”,类上的所有内容都返回null。我正在使用Java7 这是我的密码: Field field = Class.class.getDeclaredField("annotations"); field.setAccessible(true); Map<Class<? extends Annotation>, Ann

我试图在运行时向类动态添加注释,如下面的问题所示:

但是,“annotations”字段返回空值。事实上,根据调试器,除了“declaredFields”和“name”,类上的所有内容都返回null。我正在使用Java7

这是我的密码:

Field field = Class.class.getDeclaredField("annotations");
field.setAccessible(true);
Map<Class<? extends Annotation>, Annotation> annotations = 
    (Map<Class<? extends Annotation>, Annotation>) 
        field.get(clazz);
annotations.put(JsonIdentityInfo.class, newAnnotation);
Field-Field=Class.Class.getDeclaredField(“注释”);
字段。setAccessible(true);

Map似乎类字段
注释
是延迟构建的,您首先需要强制其初始化:

JsonIdentityInfo.class.getAnnotations();

然后继续编写代码。

没有此类字段“注释”。尝试
MyClass.class.getAnnotations()
如果我尝试用'clazz.getSuperClass()'替换'clazz',我会得到一个不可变的空映射,但是类上应该有现有的注释。注释类本身是否用
@Retention(RetentionPolicy.RUNTIME)注释
?@realpoint他正在使用Java7@RealSkeptic我当时使用的是Java8,但正是因为这个原因,我才恢复使用Java7!非常感谢。