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

@NonNull VS Lombok против javax.annotation.Nonnull

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

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

1 ответ

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

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

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

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

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

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

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