如何解决Java 16 Annotation ElementType.RECORD_COMPONENT 无法反映
使用 JDK 16,我声明了两个注解:
@Target({ ElementType.RECORD_COMPONENT})
@Retention(RetentionPolicy.RUNTIME)
public @interface A {}
@Target({ ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface B {}
然后我声明了一个这样的记录类:
public record User(@A @B long id,String name,int age) {}
然后我用反射来获取id的注解,即:
Annotation[] annotations = fields[0].getAnnotations();
但是 annotations
的大小是 1 而我只有 @B
,这是为什么呢?谢谢
解决方法
记录组件上的注释可能会传播到类文件中的四个位置:
- 字段
- 访问器方法
- 构造函数参数
- 记录组件本身。
这些取决于注释是否适用于
FIELD
METHOD
PARAMETER
RECORD_COMPONENT
它将传播到所有适用的地方。如果它不适用于其中任何一个,则在编译时被拒绝。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。