@NonNull или javax Ломбок @Nonnull - PullRequest
       39

@NonNull или javax Ломбок @Nonnull

0 голосов
/ 05 февраля 2019

Ломбок @ NonNull VS javax.annotation.Nonnull

Какой из них лучше использовать для параметров метода и когда?

Ответ здесь смутно сравнивает все аннотации, но не имеет никакого отношения к тому, какой из них лучше.Я просто хочу знать лучшее из двух.

1 Ответ

0 голосов
/ 05 февраля 2019

Простой поиск в Google, чтобы найти документы, дает очень очевидную разницу между ними.

javax.annotation.Nonnull является частью JSR-305, которая кажется мертвой.Даже если бы это было не так, указанная аннотация использовалась бы только для статического анализа кода, например, ваша IDE предупреждала вас о том, что вы передаете нулевое значение где-то, где это недопустимо.

lombok.NonNull это совсем другая история.Прежде всего, указанная аннотация НЕ используется для целей валидации или, скорее, для статического анализа кода.Lombok использует эту аннотацию для запуска NPE всякий раз, когда переменная экземпляра или параметр имеют значение null, когда они не должны.

Lombok, будучи постпроцессором аннотации, будет эффективно извлекать эту аннотацию в процессе предварительной компиляции и автоматически генерирует необходимый код для эффективной обработки этих случаев (манипулируя AST).

Вы можете прочитать больше об этом здесь: Lombok - NonNull .

Похоже, что ваше знакомство с функциональностью, связанной с javax.annotation, и с функциональностью Lombok не самое удачное, поэтому я бы посоветовал внимательно прочитать, что к чему.

...