Optional.orElseGet()
Возвращает значение или вызывает функцию, чтобы создать запасной вариант.
Доступно с: Java 8
Синтаксис
T orElseGet(Supplier<? extends T> supplier)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| supplier | Supplier<? extends T> | Функция, которая создаёт запасное значение. |
Возвращаемое значение
TЗначение из `Optional` или результат `supplier`.
Примеры
Функция вызывается только при отсутствии значения:
String loadDefault() {
IO.println("loading default...");
return "default";
}
void main() {
IO.println(Optional.of("cached").orElseGet(this::loadDefault));
IO.println(Optional.<String>empty().orElseGet(this::loadDefault));
}Результат:
cached
loading default...
defaultПримечания
Разница с orElse() видна, когда создание запасного значения дорогое или имеет побочные эффекты: orElseGet() вызывает функцию только при пустом Optional.
См. также
- Optional.orElse() — Возвращает значение или запасной вариант, если значения нет.
- Supplier — Поставщик: функция без аргументов, которая возвращает значение.
В учебнике
- Optional — Класс Optional в Java: значение, которого может не быть, создание через of и empty, orElse, map, ifPresent и orElseThrow.