Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
25 Июн 2024
2 мин
433

Работа с Optional в Java 8: функциональный стиль и методы ifPresent, orElse

В новом функциональном стиле программирования, который был представлен в Java 8, очень важным становится понимание работы с классом Optional. Этот класс

В новом функциональном стиле программирования, который был представлен в Java 8, очень важным становится понимание работы с классом Optional. Этот класс используется для представления опциональных значений, которые могут быть либо присутствовать, либо отсутствовать.

Рассмотрим пример кода, где используется Optional:

Optional<String> opt = getOptionalValue();

if (opt.isPresent()) {
    System.out.println("Value found: " + opt.get());
} else {
    System.out.println("No value found");
}

В этом примере, если Optional содержит значение, оно выводится на печать. В противном случае выводится сообщение о том, что значение не найдено. Однако этот код написан не в функциональном стиле.

В Java 8 были добавлены новые методы для работы с Optional в функциональном стиле. Один из них – метод ifPresent(), который принимает лямбда-выражение и выполняет его, если в Optional присутствует значение.

opt.ifPresent(value -> System.out.println("Value found: " + value));

Однако, что делать, если нужно выполнить какое-то действие в случае, если Optional не содержит значения? Для этого есть метод orElse(), который возвращает значение по умолчанию в случае, если в Optional нет значения. Но этот метод не принимает лямбда-выражения и не может быть использован для выполнения произвольного кода.

Вот как можно воспользоваться им:

String value = opt.orElse("No value found");
System.out.println(value);

В этом коде, если Optional не содержит значения, то orElse() вернет строку "No value found", которая затем будет выведена на печать.

Важно отметить, что orElse() и ifPresent() не могут быть использованы вместе в одной цепочке вызовов, так как ifPresent() возвращает void.

// Неверно
opt.ifPresent(value -> System.out.println("Value found: " + value))
   .orElse("No value found"); // Ошибка компиляции

Таким образом, в Java 8 для выполнения различных действий в зависимости от того, присутствует ли значение в Optional или нет, придется использовать старый добрый условный оператор.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий