Optional<T> - это контейнерный класс, который может содержать либо непустое значение типа T, либо быть пустым. Был добавлен в Java 8 для решения проблемы null-указателей.
Основные методы:
of(T value): Создает Optional с непустым значением. Бросает NullPointerException если значение null.ofNullable(T value): Создает Optional с непустым значением, если оно есть, или пустой Optional если значение null.empty(): Создает пустой Optional.isPresent(): Возвращает true, если значение присутствует, иначе false.isEmpty(): Возвращает true, если значение отсутствует, иначе false (добавлено в Java 11).get(): Возвращает значение, если оно присутствует, иначе бросает NoSuchElementException.orElse(T other): Возвращает значение, если оно присутствует, иначе возвращает other.orElseGet(Supplier<? extends T> other): Возвращает значение, если оно присутствует, иначе возвращает результат выполнения Supplier. Предпочтительнее orElse(T other) при дорогостоящей инициализации other.orElseThrow(Supplier<? extends X> exceptionSupplier): Возвращает значение, если оно присутствует, иначе бросает исключение, полученное от exceptionSupplier.Пример использования для избежания NullPointerException:
java
Сравнение orElse и orElseGet:
java
Optional помогает сделать код более читаемым и безопасным, явно указывая, что значение может отсутствовать. Его не следует использовать для полей классов или параметров методов, если отсутствующее значение является исключительной ситуацией.