В новом функциональном стиле программирования, который был представлен в 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 или нет, придется использовать старый добрый условный оператор.
Перейти в телеграм, чтобы получить результаты теста



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