Как определить внешние нулевые аннотации Eclipse для параметров в методах JRE

Я пытаюсь аннотировать метод JRE <T> T[] toArray(T[] a) из java.util.Set, используя Eclipse внешние нулевые аннотации. Ожидаемый эффект должен быть эквивалентен этому:

 public interface Set<E> extends Collection<E> {
     ...
     <T> T @NonNull[] toArray(T @NonNull[] a);
     ...
 }

При использовании команды Eclipse Annotate я могу правильно аннотировать возвращаемый тип метода (после того, как я выбрал T[] и поместил курсор перед [). Однако попытка сделать то же самое с параметром не удалась. Нажатие Cmd-1 просто издает звуковой сигнал, как и выбор «Аннотировать» при вызове команды из контекстного меню.

В конце концов я отредактировал соответствующий файл Set.eea вручную, чтобы определить требуемую аннотацию, позаботившись о правильном макет файла eea. т.е. Я изменил annotatedSignature в:

class java/util/Set
toArray
 <T:Ljava/lang/Object;>([TT;)[TT;
 <T:Ljava/lang/Object;>([TT;)[1TT;

to

 <T:Ljava/lang/Object;>([1TT;)[1TT;

Это отлично работает, и аннотация корректно обрабатывается компилятором.

Поскольку я могу аннотировать тип возвращаемого значения, но не тип параметра, мне интересно, что я делаю неправильно. Или это ограничение текущей версии Eclipse?

Я использую выпуск Eclipse Mars (4.5.0, идентификатор сборки: 20150621-1200) и jdk1.8.0_60.


person Udo Borkowski    schedule 14.09.2015    source источник
comment
Несколько оффтоп: есть ли предварительно скомпилированная коллекция этих внешних аннотаций? Или вы храните свою коллекцию?   -  person HRJ    schedule 22.09.2015
comment
@HRJ Я поддерживаю свою собственную коллекцию файлов внешних аннотаций. Однако я планирую сделать их открытым исходным кодом и опубликовать в ближайшее время (через GitHub). Я оставлю записку здесь, когда это будет сделано.   -  person Udo Borkowski    schedule 22.09.2015


Ответы (1)


Это действительно ошибка, я только что зарегистрировал https://bugs.eclipse.org/477461. чтобы отслеживать это.

Это была ошибка 464081, которая была исправлена ​​для 4.6 M1 (т. е. доступна в текущих сборках для Eclipse Neon) и в настоящее время предлагается для 4.5.2 (Mars.2)

person Stephan Herrmann    schedule 15.09.2015