Java 反思:Class 注释在运行时意外返回 null
Java Reflection: Class Annotations coming back null unexpectedly at runtime
我正在尝试在运行时向 class 动态添加注释,如以下问题所示:Modify a class definition's annotation string parameter at runtime
但是,'annotations' 字段返回为空。事实上,根据调试器,除了 "declaredFields" 和 "name" 之外,class 上的所有内容都将返回 null。我正在使用 Java 7.
这是我的代码:
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);
似乎 class 字段 annotations
是延迟构建的,您首先需要强制其初始化:
JsonIdentityInfo.class.getAnnotations();
然后继续你的代码。
我正在尝试在运行时向 class 动态添加注释,如以下问题所示:Modify a class definition's annotation string parameter at runtime
但是,'annotations' 字段返回为空。事实上,根据调试器,除了 "declaredFields" 和 "name" 之外,class 上的所有内容都将返回 null。我正在使用 Java 7.
这是我的代码:
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);
似乎 class 字段 annotations
是延迟构建的,您首先需要强制其初始化:
JsonIdentityInfo.class.getAnnotations();
然后继续你的代码。