63
задан 23 May 2017 в 14:47

1 ответ

Нет никакого стандарта @NonNull аннотация. Создание такой аннотации было целью JSR 305, от которого отказывались в течение долгого времени. Не будет стандарта @NonNull аннотация, пока JSR 305 не будет воссоздан. Oracle не имеет никаких текущих планов сделать так. (Аннотации JEE выходят за рамки JSR 305.)

Для futureproofing, наиболее важный фактор для рассмотрения - является ли аннотация аннотацией типа или аннотацией объявления. Поскольку @NonNull состояния свойство значения переменной, а не самой переменной, это должна быть аннотация типа. Быть аннотацией типа также позволяет аннотации быть записанной на большем количестве местоположений, как в List<@NonNull String>.

можно определить, является ли аннотация аннотацией типа путем рассмотрения @Target метааннотация на определение аннотации. С этой записи кажется, что только Платформа Средства проверки и версии Eclipse являются аннотациями типа, таким образом, я предпочел бы их тем, которые являются аннотациями объявления. Обратите внимание, что разработчики любой из других аннотаций могли обновить их, чтобы быть аннотациями типа также; я не знаю об их планах.

единственный недостаток - то, что использование аннотации типа требует использования компилятора Java 8. Платформа Средства проверки имеет механизмы для разрешения коду, содержащему его аннотации быть скомпилированной компилятором Java 7.

23
ответ дан 31 October 2019 в 13:00

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

Похожие вопросы: