@Nullable весной 5 аннотируется @Nonnull - PullRequest
0 голосов
/ 01 июля 2018

Я только что обновил свой проект, чтобы использовать Spring Boot 2.0.3 с Spring Framework 5.0.7.

И теперь я вижу, что некоторые параметры в методах MessageSource снабжены новой блестящей аннотацией Spring * @Nullable. Но из-за этой аннотации IDEA 14 говорит, что соответствующие параметры не могут быть null ( СЮРПРИЗ! ).

Как я понимаю, это связано с тем, что @Nullable помечен @Nonnull:

@Nonnull(
    when = When.MAYBE
)

По какой причине пометить аннотацию логически противоположной?

1 Ответ

0 голосов
/ 02 июля 2018

Как объяснил @StephanHerrmann, это связано с оригинальным JSR. Таким образом, идея заключается в том, что значение null допускается в некоторых случаях - просто для того, чтобы сделать код самодокументированным. Подобный подход фактически используется в javax.annotation.Nullable:

@Documented
@TypeQualifierNickname
@Nonnull(when = When.UNKNOWN)
@Retention(RetentionPolicy.RUNTIME)
public @interface Nullable {

}

В последних версиях IDEA эта аннотация поддерживается (или БУДЕТ поддерживаться) из коробки . Чтобы исправить предупреждение IDEA в старых версиях, вам просто нужно добавить аннотацию Spring вручную .

...