Option

Основные разделы

Зачем нужен

Используется для избежания проверок на Null.

В местах где мы возвращали null нужно возвращать Option.empty().

Методы

Создание

Optional.of(name) - если объект будет null получим NullPointerException.

Optional.ofNullable(name) - если объект будет null получим пустой Option.

Optional.empty() - пустой Optional.

Получение

.or(Supplier<? extends Optional<? extends T>> supplier) - это метод для подстановки другого Optional, если текущий пустой. Ленивый - выполниться только если Optional пустой.

Optional<String> a = Optional.empty();
Optional<String> b = Optional.of("fallback");

Optional<String> result = a.or(() -> b);
// result = Optional["fallback"]
        

.orElse(value) – возвращает текущее значение, иначе возвращается указанное значение. Значение вычисляется всегда, даже если Optional не пуст.

String text = null;
String result = Optional.ofNullable(text).orElse("default");
        

orElseGet(Supplier<? extends T>) – если значение присутствует, оно возвращается, иначе вызывается переданный метод(лямбда-функция).

String text = null;
String result = Optional.ofNullable(text).orElseGet(() -> "default");
        

orElseThrow(Supplier<Exception>) – если значение отсутствует, выбрасывается исключение.

String text = null;
String result = Optional.ofNullable(text).orElseThrow(() -> new Exception("error"));
        

Проверка

.isPresent() - получение boolean присутствует ли значение.

.isEmpty() - получение boolean отсутствует ли значение.

ifPresent() - позволяет выполнить действие (Consumer) над значением, если оно существует, избегая явных проверок на null.

.ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction) - заменяет комбинацию ifPresent() и orElse()(...).

Когда использовать:

Когда не нужно