Цепочки Optional
Замена вложенных проверок null на конвейер Optional.
Сравнение кода
✕ Java 8
String city = null;
if (user != null) {
Address addr = user.getAddress();
if (addr != null) {
city = addr.getCity();
}
}
if (city == null) city = "Unknown";
✓ Java 9+
String city = Optional.ofNullable(user)
.map(User::address)
.map(Address::city)
.orElse("Unknown");
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Цепочки
Каждый шаг .map() прозрачно обрабатывает null.
Линейный поток
Чтение слева направо вместо вложенных блоков if.
Защита от NPE
null обрабатывается на каждом шаге — сбои невозможны.
Старый подход
Вложенные проверки null
Современный подход
Конвейер Optional
Начиная с JDK
9
Сложность
Начинающий
Поддержка JDK
Цепочки Optional
Доступно
Доступно с JDK 8+ (улучшено в 9+)
Как это работает
Optional.map() связывает допускающие null значения и прерывает цепочку при первом null. orElse() возвращает значение по умолчанию. Это устраняет пирамиду вложенных проверок null.
Связанная документация
Доказательство