Lombok @NonNull, или как я перестал беспокоиться и полюбил NullPointerException

Цикл статей «Project Lombok».

Следующая статья — «Lombok @Cleanup — автоматическое управление ресурами».
Предыдущая статья — «Lombok val — беспроблемные final локальные переменные».

Новое в Lombok 0.11.10: Вы можете использовать @NonNull для параметра в методе или конструкторе, чтобы lombok сгенерировал проверку на null.

Lombok всегда расценивает любую аннотацию с именем @NonNull на поле как сигнал сгенерировать проверку на null, если lombok генерирует весь метод или конструктор (например, для @Data). Однако теперь при использовании @lombok.NonNull для параметра приведёт к вставке проверки на null внутрь  вашего метода или конструктора.

Проверка на null выглядит как if (param == null) throw new NullPointerException("param");  и вставляется в начало вашего метода. Для конструктора проверка на null вставляется сразу после вызова this() или super().

Если проверка на null уже присутствует в начале метода, то дополнительная проверка НЕ генерируется.

С использованием lombok

Чистая Java

Поддерживаемые ключи конфигурации

При генерации lombok проверки на null по умолчанию генерируется исключение java.lang.NullPointerException с именем поля в качестве сообщения. Однако вы можете использовать IllegalArgumentException в этой настройке, чтобы lombok генерировал это исключение с сообщением «fieldName is null».

Lombok будет помечать любое использование @NonNull как предупреждение или ошибку, если указано.

Мелким шрифтом

Механизм определения уже существующей проверки на null ищет операторы if похожие на операторы if lombok. Любой оператор throw в части «тогда» оператора if в фигурных скобках или без считается. Условие в конструкции if должно выглядеть точно как PARAMNAME == null. Первый оператор в вашем методе, который не похож на такую проверку на null,  останавливает процесс поиска проверок.

Несмотря на то что @Data и другие аннотации, генерирующие методы, работают на любой аннотации с именем @NonNull независимо от регистра и пакета, эта возможность работает только на аннотации @NonNull из пакета lombok.

Аннотация @NonNull на параметре примитивного типа вызовет предупреждение при компиляции. Никаких проверок не будет сгенерировано.

 

Цикл статей «Project Lombok».

Следующая статья — «Lombok @Cleanup — автоматическое управление ресурами».
Предыдущая статья — «Lombok val — беспроблемные final локальные переменные».

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *