Java Books
Фотография
нажмите — покажем
нажмите — покажем
🖥 В Java длинные цепочки вроде `user → address → city` легко превращаются в ловушку для `NullPointerException`.
Обычный вариант быстро разрастается:
User user = userRepository.findByEmail(email);
if (user != null) {
Address address = user.getAddress();
if (address != null) {
return address.getCity();
}
}
return "unknown";
Проблема не только в количестве строк.
В таких вложенных if легко забыть один уровень проверки и получить NPE в самом неожиданном месте.
С Optional это можно записать короче и безопаснее:
return userRepository.findByEmail(email)
.map(User::getAddress)
.map(Address::getCity)
.orElse("unknown");
Каждый map() выполняется только если предыдущее значение существует.
Если пользователя нет, адреса нет или город не задан - цепочка спокойно дойдёт до orElse().
Для таких случаев Optional хорошо работает как способ явно показать:
значение может отсутствовать, и это нормальная часть логики.
Главное не превращать Optional в новую религию.
Он особенно полезен на границах методов и в цепочках, где каждый следующий шаг может вернуть null.
👍9❤3🔥1
14 · 3.6K ·