Middle
60
questionbank

Что вы знаете о классе Optional?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

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 помогает сделать код более читаемым и безопасным, явно указывая, что значение может отсутствовать. Его не следует использовать для полей классов или параметров методов, если отсутствующее значение является исключительной ситуацией.