🔥 Почему Optional в Java – не просто контейнер!



Сегодня разберём важную тему: Optional в Java – это не просто удобный способ избежать null, но и мощный инструмент для работы с потоками данных.

🚀 Как правильно использовать Optional?

1️⃣ Избегаем null-чеков
Раньше код был полон if (obj != null), но теперь:
Optional<String> name = Optional.ofNullable(user.getName());
name.ifPresent(System.out::println);

Это делает код чище и понятнее.

2️⃣ Комбинируем с map() и flatMap()
Если у нас есть объект, внутри которого другой объект, а внутри него – ещё один, Optional поможет избежать вложенных if-else:
Optional<String> city = Optional.ofNullable(user)
.map(User::getAddress)
.map(Address::getCity);

Всё элегантно и лаконично!

3️⃣ Используем orElse() и orElseGet() правильно
❌ Антипаттерн – всегда выполняет new Object():
User user = optionalUser.orElse(new User());
✅ Лучше так – orElseGet() вызовется только если optionalUser пуст:
User user = optionalUser.orElseGet(User::new);
Это особенно важно, если объект тяжёлый в создании.

4️⃣ orElseThrow() – избавляемся от null вообще
Когда отсутствие значения – это ошибка, не бойтесь выбрасывать исключение:
User user = optionalUser.orElseThrow(() -> new RuntimeException("User not found"));
Это делает код безопаснее!

❌ Когда не стоит использовать Optional?
- В полях сущностей (например, JPA) – это может ухудшить производительность.
- Для коллекций – лучше возвращать пустую коллекцию, а не Optional<List<T>>.

👉 @BookJava
Просмотры: 1 242
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти