Цикл статей «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
1 2 3 4 5 6 7 8 9 10 |
import lombok.NonNull; public class NonNullExample extends Something { private String name; public NonNullExample(@NonNull Person person) { super("Hello"); this.name = person.getName(); } } |
Чистая Java
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import lombok.NonNull; public class NonNullExample extends Something { private String name; public NonNullExample(@NonNull Person person) { super("Hello"); if (person == null) { throw new NullPointerException("person"); } this.name = person.getName(); } } |
Поддерживаемые ключи конфигурации
1 |
lombok.nonNull.exceptionType = [NullPointerException | IllegalArgumentException] (default: NullPointerException). |
При генерации lombok проверки на null по умолчанию генерируется исключение java.lang.NullPointerException с именем поля в качестве сообщения. Однако вы можете использовать IllegalArgumentException в этой настройке, чтобы lombok генерировал это исключение с сообщением «fieldName is null».
1 |
lombok.nonNull.flagUsage = [warning | error] (default: not set) |
Lombok будет помечать любое использование @NonNull как предупреждение или ошибку, если указано.
Мелким шрифтом
Механизм определения уже существующей проверки на null ищет операторы if похожие на операторы if lombok. Любой оператор throw в части «тогда» оператора if в фигурных скобках или без считается. Условие в конструкции if должно выглядеть точно как PARAMNAME == null. Первый оператор в вашем методе, который не похож на такую проверку на null, останавливает процесс поиска проверок.
Несмотря на то что @Data и другие аннотации, генерирующие методы, работают на любой аннотации с именем @NonNull независимо от регистра и пакета, эта возможность работает только на аннотации @NonNull из пакета lombok.
Аннотация @NonNull на параметре примитивного типа вызовет предупреждение при компиляции. Никаких проверок не будет сгенерировано.
Цикл статей «Project Lombok».
Следующая статья — «Lombok @Cleanup — автоматическое управление ресурами».
Предыдущая статья — «Lombok val — беспроблемные final локальные переменные».