Запасное значение через orElseGet в Java
Метод orElseGet принимает Supplier.
Лямбда или ссылка на метод вызываются только если
контейнер пуст. Когда значение уже лежит внутри,
поставщик не трогают.
Так откладывают дорогой шаг до момента, когда он действительно нужен:
import java.util.Optional;
Optional<String> cached = Optional.of("from-cache");
String value = cached.orElseGet(() -> {
System.out.println("db call");
return "from-db";
});
System.out.println(value);
Для непустого контейнера строка "db call" не
появится. Для Optional.empty() выполнится
лямбда и вернет ее результат.
Сравнение с orElse: там запасное значение
создают до вызова метода; здесь - только при пустоте.
Подготовьте ленивый запас со значением 0.
Для пустого контейнера и контейнера с числом
7 выведите итоговые значения.