Класс 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 |
empty() |
Возвращает пустой экземпляр Optional. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому Optional. |
Optional |
filter |
Если значение присутствует и значение соответствует заданному предикату, возвращает Optional, описывающее значение; в противном случае возвращает пустой Optional. |
<U> Optional |
flatMap |
Если значение присутствует, возвращает результат применения заданной отображающей функции, несущей Optional, к значению; в противном случае возвращает пустой Optional. |
T |
get() |
Если значение присутствует, возвращает значение; в противном случае выбрасывает NoSuchElementException. |
int |
hashCode() |
Возвращает хэш-код значения, если оно присутствует; в противном случае 0 (ноль), если значение отсутствует. |
void |
ifPresent |
Если значение присутствует, выполняет заданное действие со значением; в противном случае ничего не делает. |
void |
ifPresentOrElse |
Если значение присутствует, выполняет заданное действие со значением; в противном случае выполняет заданное действие, связанное с отсутствием значения. |
boolean |
isEmpty() |
Если значение отсутствует, возвращает true, в противном случае false. |
boolean |
isPresent() |
Если значение присутствует, возвращает true, в противном случае false. |
<U> Optional |
map |
Если значение присутствует, возвращает Optional, описывающее (как будто с помощью ofNullable(T)) результат применения заданной отображающей функции к значению; в противном случае возвращает пустой Optional. |
static <T> Optional |
of |
Возвращает Optional, описывающий данное ненулевое значение. |
static <T> Optional |
ofNullable |
Возвращает Optional, описывающий данное значение, если оно не null, в противном случае возвращает пустой Optional. |
Optional |
or |
Если значение присутствует, возвращает Optional, описывающее значение, в противном случае возвращает Optional, полученное от функции. |
T |
orElse |
Если значение присутствует, возвращает значение, в противном случае возвращает other. |
T |
orElseGet |
Если значение присутствует, возвращает значение, в противном случае возвращает результат, полученный от поставщика. |
T |
orElseThrow() |
Если значение присутствует, возвращает значение; в противном случае выбрасывает NoSuchElementException. |
<X extends Throwable> |
orElseThrow |
Если значение присутствует, возвращает значение; в противном случае выбрасывает исключение, созданное функцией создания исключений. |
Stream |
stream() |
Если значение присутствует, возвращает последовательную Stream, содержащую только это значение; в противном случае возвращает пустой Stream. |
String |
toString() |
Возвращает строковое представление этого Optional, подходящее для отладки. |
Краткое описание методов
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().
hashCode
toString
public String toString()
Optional, подходящее для отладки. Точный формат представления не определен и может различаться между реализациями и версиями.
© 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