Шаг 119.
Язык программирования Java.
Классы Optional, OptionalInt, OptionalLong, OptionalDouble

На этом шаге мы рассмотрим классы Optional, OptionalInt, OptionalLong, OptionalDouble

Ранее мы говорили про функции reduce, min, max, findFirst, FindAny из интерфейса Stream. Данные функции возвращают объект типа Optional. Этот тип представляет из себя своего рода коробку, в которой как может присутствовать какое-то значение, так и отсутствовать. В таблице 1 приведены функции класса Optional.

Таблица 1. Функции класса Optional
Функция Описание
Optional<T> empty() Создает пустую упаковку.
Optional<T> of(T value) Создает упаковку с заданным содержимым. Если передать значение null, то будет брошено исключение.
Optional<T> ofNullable(T value) Создает упаковку с заданным содержимым. Если передать значение null, то будет создана пустая упаковка.
T get() Функция для получение упакованного значения. Если упаковка была пуста, то будет брошено исключение.
boolean isPresent() Функция для проверки на пустоту упаковки. Возвращает true - если упаковка не пустая, и false - в противном случае.
void ifPresent(Consumer<? super T> consumer) Если упаковка не пустая, то применяется переданная функция к содержимому упаковки. В противном случае ничего не происходит.
T orElse(T other) Если упаковка не пустая, то возвращается упакованное значение. В противном случае возвращается значение other.
T orElseGet(Supplier<? extends T> other) Если упаковка не пустая, то возвращается упакованное значение. В противном случае возвращается значение other.
T orElseThrow(Supplier<? extends X> exceptionSupplier) Если упаковка не пустая, то возвращается упакованное значение. В противном случае будет брошено исключение exceptionSupplier.

Классы OptionalInt, OptionalLong и OptionalDouble аналогичны классу Optional, за исключением того, что они служат для определенных примитивных типов. Для получения упакованного значения для этих классов нужно использовать функцию getAsInt, getAsLong и getAsDouble соответственно.

На следующем шаге мы рассмотрим интерфейс Collector и класс Collectors

Предыдущий шаг Содержание Следующий шаг