Аннотация Java на типе переменной / поля / параметра теряется в ссылках на идентификаторы, почему это так? - PullRequest
0 голосов
/ 12 марта 2019

Следующий пример иллюстрирует основную проблему.

public class MyClass {
  private @Foo MyClass _myClass;

  public void test() {
    // the type information for the `_myClass` reference does not include the `@Foo` annotation 
    Object obj = _myClass;
  }
}

Используя обработчик аннотаций или плагин компилятора, вы можете проверить тип инициализатора _myClass в объявлении переменной Object obj = _myClass.

В частности, поле JCTree.JCIdent#type, соответствующее ссылке _myClass, не содержит аннотации @Foo в метаданных. Это кажется общей проблемой в компиляторе - все метаданные аннотации теряются во время присвоения выражений и т. Д. Это предотвращает целый класс функций, которые в противном случае могли бы работать с аннотацией.

Или, может быть, я упускаю что-то очевидное?

Я бы предпочел зарегистрировать это как запрос функции на JDK Bug tracker , но это закрытая система: (

Я надеюсь, что кто-то из этого проекта может скрываться здесь и может предложить больше информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...