Найти в Дзене
17 подписчиков

​​Тема с работой и применением null максимально горячая и вызывает много споров (даже у меня уже есть несколько постов на эту тему, такой https://t.me/cod_cat/120 и тут https://dzen.ru/media/cod_cat/uje-pisal-pro-nulltut-i-tut-i-uveren-vy-sto-raz-slyshali-kak-ploho-65aa8e811225e85516fc02f5). Лично мне нравится использовать Optional (но это тоже нужно делать осторожно, позже сделаю заметку про это), но есть еще формат использовать Objects.requireNonNull(). Сам метод выглядит следующим образом.

static <T> T requireNonNull(T obj, String message) {
if (obj == null)
throw new NullPointerException(message);
return obj;
}
Тут может возникнуть закономерный вопрос: зачем этот метод для проверки null, если в любом случае генерируется NullPointerException?
Часто можно встретить такое утверждение, что прежде всего код должен быть понятен и прозрачен человеку, т. е. мало написать оптимальный код, он должен быть легко поддерживаемым другими программистами. Как раз использование Objects.requireNonNull() делает код более явным, например: class Foo {
private final Bar bar;

public Foo(Bar bar) {
Objects.requireNonNull(bar, "bar must not be null");
this.bar = bar;
}
Такой код позволяет гарантировать, что если объект Foo был создан через new(), тогда объект Bar гарантированно не равен null, т. е. не нужно далее в коде использовать if (bar != null). Другими словами, используя данный метод для проверки входящих объектов, вы можете контролировать момент, когда будет выброшено исключение. Вы ведь придерживаетесь принципа «Fail Fast!», ведь да? https://habr.com/ru/articles/697084/
​​Тема с работой и применением null максимально горячая и вызывает много споров (даже у меня уже есть несколько постов на эту тему, такой https://t.me/cod_cat/120 и тут https://dzen.
1 минута