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
один, и я только получил
@B
, это почему? Спасибо
1 ответ
Аннотации к компонентам записи распространяются потенциально в четыре места в файле класса: поля, методы доступа, аргументы конструктора и сами компоненты записи. Они зависят от того, применима ли аннотация к FIELD, METHOD, PARAMETER и RECORD_COMPONENT; он будет распространен во всех местах, где это применимо. Если это не применимо ни к одному из них, оно отклоняется во время компиляции.