РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
558 of 1163 menu

Метод orElseGet

Метод orElseGet класса Optional возвращает значение, которое хранится внутри контейнера, если оно присутствует. Если же Optional пуст, метод вызывает переданную функцию-поставщика Supplier и возвращает её результат. В параметр мы передаём функцию, которая будет вызвана только при отсутствии значения. Это отличает метод от orElse, где значение-запасной вариант вычисляется всегда.

Синтаксис

optional.orElseGet(supplier)

Пример

Давайте получим значение из непустого Optional. Функция-поставщик при этом не будет вызвана:

import java.util.Optional; public class Main { public static void main(String[] args) { Optional<String> opt = Optional.of("abcde"); String res = opt.orElseGet(() -> "12345"); System.out.println(res); } }

Результат выполнения кода:

"abcde"

Пример

А теперь получим значение из пустого Optional. В этом случае сработает функция-поставщик:

import java.util.Optional; public class Main { public static void main(String[] args) { Optional<String> opt = Optional.empty(); String res = opt.orElseGet(() -> "12345"); System.out.println(res); } }

Результат выполнения кода:

"12345"

Пример

Давайте убедимся, что функция-поставщик вызывается только при пустом Optional:

import java.util.Optional; public class Main { public static void main(String[] args) { Optional<String> opt = Optional.of("abcde"); String res = opt.orElseGet(() -> { System.out.println("Supplier called"); return "12345"; }); System.out.println(res); } }

Результат выполнения кода:

"abcde"

Смотрите также

  • метод orElse,
    который возвращает запасное значение напрямую
  • метод orElseThrow,
    который выбрасывает исключение при отсутствии значения
  • метод get,
    который возвращает значение из Optional
  • класс Optional,
    который представляет контейнер для значения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить