【发布时间】:2021-12-02 04:25:02
【问题描述】:
我玩唱片,发现一些对我来说看起来不合逻辑的东西:
记录:
record R(@NotEmpty Integer i) {}
代码:
RecordComponent[] recordComponents = R.class.getRecordComponents();
System.out.println(recordComponents[0].isAnnotationPresent(NotEmpty.class));
//prints false
但是,如果我这样做:
System.out.println(R.class.getDeclaredFields()[0].isAnnotationPresent(NotEmpty.class));
//prints true
这是预期的吗?因为RecordComponent implements AnnotatedElement,所以我认为RecordComponent 应该有关于注释的信息。我的期望错了吗?
【问题讨论】:
-
你必须显示
@NotEmpty的定义。我想,它的@Target注释(如果有的话)没有列出RECORD_COMPONENT
标签: java java-record java-17