Улучшенный класс Optional в Java 9
Класс Optional был представлен в Java 8. Появление класса Optional эффективно решает проблему исключения нулевого указателя. В Java 9 были добавлены три метода для улучшения его функциональности:
- stream()
- ifPresentOrElse()
- or()
метод stream()
Синтаксис
public Stream<T> stream()
Метод stream преобразует Optional в Stream. Если Optional содержит значение, он возвращает Stream, содержащий это значение; в противном случае он возвращает пустой Stream (Stream.empty()).
Пример
Результат выполнения вывода:
[A, B] [A, B]
метод ifPresentOrElse()
Синтаксис
public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
Улучшение метода ifPresentOrElse заключается в том, что у него есть блок else, принимающий два параметра: Consumer и Runnable.
Назначение метода ifPresentOrElse: если Optional содержит значение, для содержащегося значения вызывается функция action, т. е. action.accept(value), что соответствует ifPresent; отличие от метода ifPresent в том, что ifPresentOrElse также имеет второй параметр, emptyAction — если Optional не содержит значения, ifPresentOrElse вызывает emptyAction, т. е. emptyAction.run().
Пример
Результат выполнения вывода:
Value: 1 Not Present.
метод or()
Синтаксис
public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)
Если значение существует, вернуть значение, указанное Optional; иначе вернуть предустановленное значение.
Пример
Результат выполнения вывода:
Value: Mahesh Value: Not Present
Новые возможности Java 9