Sobes.tech
Назад к вопросам
Junior — Middle
65

Можешь перечислить и объяснить различные способы использования класса Optional в Java?

Ответ от нейросети

sobes.tech AI

Класс Optional в Java используется для обёртки значений, которые могут быть отсутствующими (null), чтобы избежать NullPointerException и сделать код более читаемым и безопасным.

Основные способы использования Optional:

  • Создание Optional:

    • Optional.of(value) — создаёт Optional с непустым значением (если value == null, выбросит исключение).
    • Optional.ofNullable(value) — создаёт Optional, который может содержать null (если value == null, создаётся пустой Optional).
    • Optional.empty() — создаёт пустой Optional.
  • Проверка наличия значения:

    • isPresent() — возвращает true, если значение присутствует.
    • ifPresent(Consumer) — выполняет действие, если значение присутствует.
  • Получение значения:

    • get() — возвращает значение, если оно есть, иначе выбрасывает исключение.
    • orElse(defaultValue) — возвращает значение или дефолт, если пусто.
    • orElseGet(Supplier) — лениво возвращает дефолтное значение.
    • orElseThrow() — выбрасывает исключение, если значения нет.
  • Преобразование и фильтрация:

    • map(Function) — применяет функцию к значению, если оно есть, и возвращает новый Optional.
    • flatMap(Function) — как map, но функция возвращает Optional.
    • filter(Predicate) — возвращает Optional, если значение удовлетворяет условию.

Пример:

Optional<String> optionalName = Optional.ofNullable(getName());
optionalName.ifPresent(name -> System.out.println("Name: " + name));

String defaultName = optionalName.orElse("Unknown");

int length = optionalName.map(String::length).orElse(0);