TGViewer
Java Books Java Books @java_library · 14.2K subscribers
Post #754 3.58K
🖥 В 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
  • 🔥 2
More from @java_library
  1. Sep 15, 2026Apache Kafka курс 2026: бесплатный курс по Kafka с нуля до профи на русском Kafka обучение…
  2. Sep 12, 2026🖥 Java в 2026 году: 25 лучших практических примеров кода от основ до многопоточности http…
  3. Sep 10, 2026☕ Java: в HashSet всего 10 элементов, а обход всё равно тормозит Редкий нюанс: время обход…
  4. Sep 10, 2026🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Ste…
  5. Sep 7, 2026☕️ Java получил практический MCP-сервер для медицинского AI-триажа На JavaOne показали сис…
  6. Sep 6, 2026Apache Kafka 4.x - продвинутый бесплатный практический курс 2026 года https://github.com/j…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →