Has*_*ang 1 java reflection java-record java-16
使用 JDK 16,我声明了两个注释:
@Target({ ElementType.RECORD_COMPONENT})
@Retention(RetentionPolicy.RUNTIME)
public @interface A {}
@Target({ ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface B {}
Run Code Online (Sandbox Code Playgroud)
我声明了一个像这样的记录类?
public record User(@A @B long id, String name, int age) {}
Run Code Online (Sandbox Code Playgroud)
然后我使用反射来获取id的注解,即:
Annotation[] annotations = fields[0].getAnnotations();
Run Code Online (Sandbox Code Playgroud)
但是 的大小annotations是 1 而我只有@B,这是为什么呢?谢谢
记录组件上的注释可能会传播到类文件中的四个位置:
这些由注释是否适用于
FIELDMETHODPARAMETERRECORD_COMPONENT它将传播到所有适用的地方。如果它不适用于其中任何一个,则在编译时被拒绝。