Поведение @Nonnull отличается для Eclipse Juno и Kepler?

Я столкнулся с довольно странным сценарием, который мне до сих пор удавалось определить для разных версий Eclipse. Мне интересно, может ли кто-нибудь сказать мне, в чем именно проблема (Juno не поддерживает ее, Kepler обеспечивает лучшую поддержку и т. д.). Я использую jsr305 для аннотаций.

У меня есть следующий пример кода для воспроизведения поведения.

@Nonnull
String test = null;

Это не должно работать, поскольку я прямо сказал, используя аннотации, что тест не должен быть нулевым. В «Кеплере» он это улавливает, а в «Юноне» — нет. Все настройки одинаковые, это просто случай несовместимости версии с jsr305?


person Otra    schedule 26.03.2014    source источник
comment
Вы используете одну и ту же версию jsr305 в обеих средах? Что это за версия?   -  person Chris Gerken    schedule 26.03.2014
comment
Да, та же версия, к сожалению, не уверен. Файл манифеста не включает версию.   -  person Otra    schedule 26.03.2014
comment
Я могу только догадываться, что параметры компилятора в настройках Java Compiler либо разные, либо установлены по-разному.   -  person Chris Gerken    schedule 26.03.2014


Ответы (1)


Юнона не поддерживала маркировку полей как @Nullable, но Кеплер поддерживает. Посмотрите эти интересные посты:

Я предпочитаю использовать плагин FindBugs Maven, так как я не завишу от IDE и могу применять политики во время сборки. Я в основном использую эти аннотации:

import javax.annotation.CheckForNull;
import javax.annotation.CheckReturnValue;
import javax.annotation.Nonnull;

Вероятно, мне следует также взглянуть на поддержку IDE, но это будет только «дополнительно».

person Christophe Roussy    schedule 13.05.2014