Java反射:类注释在运行时意外返回null
我试图在运行时向类动态添加注释,如下面的问题所示: 但是,“annotations”字段返回空值。事实上,根据调试器,除了“declaredFields”和“name”,类上的所有内容都返回null。我正在使用Java7 这是我的密码: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
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!非常感谢。