Spec-Zone.ru › OpenJDK 24

Класс Optional<T>

java.lang.Object
java.util.Optional<T>
Параметры типа:
T - тип значения
public final class Optional<T> extends Object
Объект-контейнер, который может или не может содержать ненулевое значение. Если значение присутствует, isPresent() возвращает true. Если значение отсутствует, объект считается пустым, и isPresent() возвращает false.

Предоставляются дополнительные методы, зависящие от наличия или отсутствия содержащегося значения, такие как orElse() (возвращает значение по умолчанию, если значение отсутствует) и ifPresent() (выполняет действие, если значение присутствует).

Это класс базирующийся на значении; программисты должны рассматривать экземпляры, которые равны, как взаимозаменяемые и не должны использовать экземпляры для синхронизации, так как это может привести к непредсказуемому поведению. Например, в будущих версиях синхронизация может завершиться неудачей.

Примечание API:
Optional предназначен в первую очередь для использования в качестве типа возвращаемого значения метода, где явно необходимо представить «отсутствие результата», и где использование null, вероятно, приведёт к ошибкам. Переменная, тип которой Optional, никогда не должна быть null; она всегда должна указывать на экземпляр Optional.
С:
1.8

Краткое описание методов

Модификатор и тип Метод Описание
static <T> Optional<T> empty()
Возвращает пустой экземпляр Optional.
boolean equals(Object obj)
Указывает, является ли другой объект «равным» этому Optional.
Optional<T> filter(Predicate<? super T> predicate)
Если значение присутствует и значение соответствует заданному предикату, возвращает Optional, описывающее значение; в противном случае возвращает пустой Optional.
<U> Optional<U> flatMap(Function<? super T, ? extends Optional<? extends U>> mapper)
Если значение присутствует, возвращает результат применения заданной отображающей функции, несущей Optional, к значению; в противном случае возвращает пустой Optional.
T get()
Если значение присутствует, возвращает значение; в противном случае выбрасывает NoSuchElementException.
int hashCode()
Возвращает хэш-код значения, если оно присутствует; в противном случае 0 (ноль), если значение отсутствует.
void ifPresent(Consumer<? super T> action)
Если значение присутствует, выполняет заданное действие со значением; в противном случае ничего не делает.
void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
Если значение присутствует, выполняет заданное действие со значением; в противном случае выполняет заданное действие, связанное с отсутствием значения.
boolean isEmpty()
Если значение отсутствует, возвращает true, в противном случае false.
boolean isPresent()
Если значение присутствует, возвращает true, в противном случае false.
<U> Optional<U> map(Function<? super T, ? extends U> mapper)
Если значение присутствует, возвращает Optional, описывающее (как будто с помощью ofNullable(T)) результат применения заданной отображающей функции к значению; в противном случае возвращает пустой Optional.
static <T> Optional<T> of(T value)
Возвращает Optional, описывающий данное ненулевое значение.
static <T> Optional<T> ofNullable(T value)
Возвращает Optional, описывающий данное значение, если оно не null, в противном случае возвращает пустой Optional.
Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)
Если значение присутствует, возвращает Optional, описывающее значение, в противном случае возвращает Optional, полученное от функции.
T orElse(T other)
Если значение присутствует, возвращает значение, в противном случае возвращает other.
T orElseGet(Supplier<? extends T> supplier)
Если значение присутствует, возвращает значение, в противном случае возвращает результат, полученный от поставщика.
T orElseThrow()
Если значение присутствует, возвращает значение; в противном случае выбрасывает NoSuchElementException.
<X extends Throwable>
T
orElseThrow(Supplier<? extends X> exceptionSupplier)
Если значение присутствует, возвращает значение; в противном случае выбрасывает исключение, созданное функцией создания исключений.
Stream<T> stream()
Если значение присутствует, возвращает последовательную Stream, содержащую только это значение; в противном случае возвращает пустой Stream.
String toString()
Возвращает строковое представление этого Optional, подходящее для отладки.

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Краткое описание методов

empty

public static <T> Optional<T> empty()
Возвращает пустой экземпляр Optional. Для этого Optional значение отсутствует.
Примечание к API:
Хотя это может показаться заманчивым, избегайте проверки на пустоту объекта путем сравнения с == или != по отношению к экземплярам, возвращаемым Optional.empty(). Нет гарантии, что это синглтон. Вместо этого используйте isEmpty() или isPresent().
Параметры типа:
T - Тип несуществующего значения
Возвращает:
пустой Optional

of

public static <T> Optional<T> of(T value)
Возвращает Optional, описывающий заданное не-null значение.
Параметры типа:
T - тип значения
Параметры:
value - значение для описания, которое должно быть не-null
Возвращает:
Optional с присутствующим значением
Исключения:
NullPointerException - если значение null

ofNullable

public static <T> Optional<T> ofNullable(T value)
Возвращает Optional, описывающий заданное значение, если оно не-null, иначе возвращает пустой Optional.
Параметры типа:
T - тип значения
Параметры:
value - возможно-null значение для описания
Возвращает:
Optional с присутствующим значением, если указанное значение не-null, иначе пустой Optional

get

public T get()
Если значение присутствует, возвращает значение, иначе выбрасывает NoSuchElementException.
Примечание к API:
Предпочтительная альтернатива этому методу - orElseThrow().
Возвращает:
не-null значение, описываемое этим Optional
Исключения:
NoSuchElementException - если значение отсутствует

isPresent

public boolean isPresent()
Если значение присутствует, возвращает true, иначе false.
Возвращает:
true если значение присутствует, иначе false

isEmpty

public boolean isEmpty()
Если значение отсутствует, возвращает true, иначе false.
Возвращает:
true если значение отсутствует, иначе false
С версии:
11

ifPresent

public void ifPresent(Consumer<? super T> action)
Если значение присутствует, выполняет заданное действие со значением, иначе ничего не делает.
Параметры:
action - действие, которое должно быть выполнено, если значение присутствует
Исключения:
NullPointerException - если значение присутствует и заданное действие null

ifPresentOrElse

public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
Если значение присутствует, выполняет заданное действие со значением, иначе выполняет заданное действие для пустого значения.
Параметры:
action - действие, которое должно быть выполнено, если значение присутствует
emptyAction - действие для пустого значения, которое должно быть выполнено, если значение отсутствует
Исключения:
NullPointerException - если значение присутствует и заданное действие null, или значение отсутствует и заданное действие для пустого значения null.
С версии:
9

filter

public Optional<T> filter(Predicate<? super T> predicate)
Если значение присутствует и значение соответствует заданному предикату, возвращает Optional, описывающий значение, иначе возвращает пустой Optional.
Параметры:
predicate - предикат для применения к значению, если оно присутствует
Возвращает:
Optional, описывающий значение этого Optional, если значение присутствует и значение соответствует заданному предикату, иначе пустой Optional
Исключения:
NullPointerException - если предикат null

map

public <U> Optional<U> map(Function<? super T, ? extends U> mapper)
Если значение присутствует, возвращает Optional, описывающий (как будто с помощью ofNullable(T)) результат применения заданной функции отображения к значению, иначе возвращает пустой Optional.

Если функция отображения возвращает результат null, то этот метод возвращает пустой Optional.

Примечание к API:
Этот метод поддерживает постобработку значений Optional без необходимости явной проверки возвращаемого статуса. Например, следующий код проходит по потоку URI, выбирает тот, который еще не обработан, и создает путь из этого URI, возвращая Optional<Path>:

     Optional<Path> p =
         uris.stream().filter(uri -> !isProcessedYet(uri))
                       .findFirst()
                       .map(Paths::get);
 
Здесь, findFirst возвращает Optional<URI>, а затем map возвращает Optional<Path> для желаемого URI, если он существует.
Параметры типа:
U - Тип значения, возвращаемого функцией отображения
Параметры:
mapper - функция отображения для применения к значению, если оно присутствует
Возвращает:
Optional, описывающий результат применения функции отображения к значению этого Optional, если значение присутствует, иначе пустой Optional
Исключения:
NullPointerException - если функция отображения null

flatMap

public <U> Optional<U> flatMap(Function<? super T, ? extends Optional<? extends U>> mapper)
Если значение присутствует, возвращает результат применения заданной функции отображения с Optional, иначе возвращает пустой Optional.

Этот метод похож на map(Function), но функция отображения - это та, чей результат уже является Optional, и если вызывается, flatMap не оборачивает его в дополнительный Optional.

Параметры типа:
U - Тип значения Optional, возвращаемого функцией отображения
Параметры:
mapper - функция отображения для применения к значению, если оно присутствует
Возвращает:
результат применения функции отображения с Optional к значению этого Optional, если значение присутствует, иначе пустой Optional
Исключения:
NullPointerException - если функция отображения null или возвращает результат null

or

public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)
Если значение присутствует, возвращает Optional, описывающий значение, иначе возвращает Optional, созданный функцией поставщика.
Параметры:
supplier - функция поставщика, которая создает Optional для возврата
Возвращает:
возвращает Optional, описывающий значение этого Optional, если значение присутствует, иначе Optional, созданный функцией поставщика.
Исключения:
NullPointerException - если функция поставщика null или создает результат null
С версии:
9

stream

public Stream<T> stream()
Если значение присутствует, возвращает последовательный Stream, содержащий только это значение, иначе возвращает пустой Stream.
Примечание к API:
Этот метод может быть использован для преобразования Stream необязательных элементов в Stream элементов с присутствующим значением:

     Stream<Optional<T>> os = ..
     Stream<T> s = os.flatMap(Optional::stream)
 
Возвращает:
необязательное значение как Stream
С версии:
9

orElse

public T orElse(T other)
Если значение присутствует, возвращает значение, иначе возвращает other.
Параметры:
other - значение, которое должно быть возвращено, если значение отсутствует. Может быть null.
Возвращает:
значение, если присутствует, иначе other

orElseGet

public T orElseGet(Supplier<? extends T> supplier)
Если значение присутствует, возвращает значение, в противном случае возвращает результат, полученный от функции-поставщика.
Parameters:
supplier - функция-поставщик, которая производит значение, которое должно быть возвращено
Returns:
значение, если оно присутствует, в противном случае результат, полученный от функции-поставщика
Throws:
NullPointerException - если значение отсутствует и функция-поставщик является null

orElseThrow

public T orElseThrow()
Если значение присутствует, возвращает значение, в противном случае генерирует исключение NoSuchElementException.
Returns:
значение, не являющееся null, описываемое этим Optional
Throws:
NoSuchElementException - если значение отсутствует
Since:
10

orElseThrow

public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X
Если значение присутствует, возвращает значение, в противном случае генерирует исключение, созданное функцией-поставщиком исключений.
API Note:
В качестве поставщика можно использовать ссылку на метод конструктора исключения с пустым списком аргументов. Например, IllegalStateException::new
Type Parameters:
X - Тип исключения, которое должно быть сгенерировано
Parameters:
exceptionSupplier - функция-поставщик, которая генерирует исключение, которое должно быть сгенерировано
Returns:
значение, если оно присутствует
Throws:
X - если значение отсутствует
NullPointerException - если значение отсутствует и функция-поставщик исключений является null

equals

public boolean equals(Object obj)
Указывает, является ли другой объект "равным" этому Optional. Другой объект считается равным, если:
  • он также является Optional и;
  • оба экземпляра не содержат значения или;
  • настоящие значения "равны" друг другу по equals().
Overrides:
equals в классе Object
Parameters:
obj - объект, который должен быть проверен на равенство
Returns:
true, если другой объект "равен" этому объекту, в противном случае false
See Also:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает код хэша значения, если оно присутствует, в противном случае 0 (ноль), если значение отсутствует.
Overrides:
hashCode в классе Object
Returns:
значение кода хэша присутствующего значения или 0, если значение отсутствует
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

toString

public String toString()
Возвращает непустую строковую представление этого Optional, подходящее для отладки. Точный формат представления не определен и может различаться между реализациями и версиями.
Overrides:
toString в классе Object
Implementation Requirements:
Если значение присутствует, результат должен включать его строковое представление в результате. Пустые и имеющие значения Optional должны быть однозначно различимы.
Returns:
строковое представление этого экземпляра

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/Optional.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API