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; он будет распространен во всех местах, где это применимо. Если это не применимо ни к одному из них, оно отклоняется во время компиляции.

Другие вопросы по тегам