Objects.requireNonNullElse()
Получить ненулевое значение с явным значением по умолчанию — без тернарного оператора.
Сравнение кода
✕ Java 8
String name = input != null
? input
: "default";
// easy to get the order wrong
✓ Java 9+
String name = Objects
.requireNonNullElse(
input, "default"
);
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Явное намерение
Название метода точно описывает, что он делает.
Null-безопасное значение по умолчанию
Значение по умолчанию также проверяется на null.
Читаемость
Лучше тернарного оператора для простой логики null-или-по-умолчанию.
Старый подход
Тернарная проверка null
Современный подход
requireNonNullElse()
Начиная с JDK
9
Сложность
Начинающий
Поддержка JDK
Objects.requireNonNullElse()
Доступно
Доступно в JDK 9 (сент. 2017)
Как это работает
requireNonNullElse возвращает первый аргумент, если он не null, иначе — второй. Значение по умолчанию само не может быть null — при двух null-значениях выбрасывается NPE, что выявляет ошибки на раннем этапе.
Связанная документация
Доказательство