Метод or
Метод or возвращает текущий объект Optional, если он содержит значение.
Если текущий объект пуст, метод возвращает Optional,
созданный с помощью функции-поставщика Supplier.
В параметр мы передаем Supplier, который возвращает
новый Optional для использования в случае отсутствия значения.
Метод позволяет строить цепочки альтернативных источников данных.
Синтаксис
optional.or(Supplier<? extends Optional<? extends T>> supplier)
Пример
Давайте создадим непустой Optional и вызовем метод or.
Так как значение присутствует, вернется исходный Optional:
import java.util.Optional;
public class Main
{
public static void main(String[] args)
{
Optional<String> opt = Optional.of("abcde");
Optional<String> res = opt.or(() -> Optional.of("12345"));
System.out.println(res);
}
}
Результат выполнения кода:
Optional[abcde]
Пример
Давайте создадим пустой Optional и вызовем метод or.
Так как значение отсутствует, вернется Optional,
созданный в Supplier:
import java.util.Optional;
public class Main
{
public static void main(String[] args)
{
Optional<String> opt = Optional.empty();
Optional<String> res = opt.or(() -> Optional.of("12345"));
System.out.println(res);
}
}
Результат выполнения кода:
Optional[12345]
Пример
Давайте создадим цепочку из трех Optional,
где первые два пустые, а третий содержит значение:
import java.util.Optional;
public class Main
{
public static void main(String[] args)
{
Optional<String> first = Optional.empty();
Optional<String> second = Optional.empty();
Optional<String> third = Optional.of("abcde");
Optional<String> res = first
.or(() -> second)
.or(() -> third);
System.out.println(res);
}
}
Результат выполнения кода:
Optional[abcde]