Ответ
Проверка на null в Java всегда должна возвращать значение типа boolean (true или false).
Способы проверки:
| Способ | Возвращает true, если... |
Пример |
|---|---|---|
Оператор == |
ссылка равна null |
obj == null |
Оператор != |
ссылка НЕ равна null |
obj != null |
Objects.isNull(obj) |
ссылка равна null (удобно для лямбд) |
Objects.isNull(obj) |
Objects.nonNull(obj) |
ссылка НЕ равна null (удобно для лямбд) |
Objects.nonNull(obj) |
Примеры:
String potentiallyNullString = getStringFromExternalSource();
// Классическая проверка
if (potentiallyNullString == null) {
System.out.println("Строка не была инициализирована.");
}
// Проверка через утилитный класс (java.util.Objects)
if (Objects.nonNull(potentiallyNullString)) {
int length = potentiallyNullString.length(); // Безопасный вызов
}
Важное отличие от Optional:
- Проверка на
null— это низкоуровневая операция сравнения ссылки. Optional— это контейнер-обертка, который инкапсулирует возможное отсутствие значения. Для проверки наличия значения вOptionalиспользуются методыisPresent()(есть значение) илиisEmpty()(значение отсутствует).Optional<String> optionalValue = Optional.ofNullable(potentiallyNullString); if (optionalValue.isPresent()) { // Аналог Objects.nonNull(...) String value = optionalValue.get(); }Использование
Optionalпредпочтительнее для возвращаемых значений методов, так как явно указывает на возможность отсутствия результата.