| [ Web Proxy ] |
| Viewing: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Optional.html | [Back] [Original] |
T - the type of valuepublic final class Optional<T> extends Object
null value.
If a value is present, isPresent() returns true. If no
value is present, the object is considered empty and
isPresent() returns false.
Additional methods that depend on the presence or absence of a contained
value are provided, such as orElse()
(returns a default value if no value is present) and
ifPresent() (performs an
action if a value is present).
This is a value-based
class; use of identity-sensitive operations (including reference equality
(==), identity hash code, or synchronization) on instances of
Optional may have unpredictable results and should be avoided.
Optional is primarily intended for use as a method return type where
there is a clear need to represent "no result," and where using null
is likely to cause errors. A variable whose type is Optional should
never itself be null; it should always point to an Optional
instance.| Modifier and Type | Method | Description |
|---|---|---|
static <T> Optional<T> |
empty() |
Returns an empty
Optional instance. |
boolean |
equals(Object obj) |
Indicates whether some other object is "equal to" this
Optional. |
Optional<T> |
filter(Predicate<? super T> predicate) |
If a value is present, and the value matches the given predicate,
returns an
Optional describing the value, otherwise returns an
empty Optional. |
<U> Optional<U> |
flatMap(Function<? super T,? extends Optional<? extends U>> mapper) |
If a value is present, returns the result of applying the given
Optional-bearing mapping function to the value, otherwise returns
an empty Optional. |
T |
get() |
If a value is present, returns the value, otherwise throws
NoSuchElementException. |
int |
hashCode() |
Returns the hash code of the value, if present, otherwise
0
(zero) if no value is present. |
void |
ifPresent(Consumer<? super T> action) |
If a value is present, performs the given action with the value,
otherwise does nothing.
|
void |
ifPresentOrElse(Consumer<? super T> action,
Runnable emptyAction) |
If a value is present, performs the given action with the value,
otherwise performs the given empty-based action.
|
boolean |
isEmpty() |
If a value is not present, returns
true, otherwise
false. |
boolean |
isPresent() |
If a value is present, returns
true, otherwise false. |
<U> Optional<U> |
map(Function<? super T,? extends U> mapper) |
If a value is present, returns an
Optional describing (as if by
ofNullable(T)) the result of applying the given mapping function to
the value, otherwise returns an empty Optional. |
static <T> Optional<T> |
of(T value) |
Returns an
Optional describing the given non-null
value. |
static <T> Optional<T> |
ofNullable(T value) |
Returns an
Optional describing the given value, if
non-null, otherwise returns an empty Optional. |
Optional<T> |
or(Supplier<? extends Optional<? extends T>> supplier) |
If a value is present, returns an
Optional describing the value,
otherwise returns an Optional produced by the supplying function. |
T |
orElse(T other) |
If a value is present, returns the value, otherwise returns
other. |
T |
orElseGet(Supplier<? extends T> supplier) |
If a value is present, returns the value, otherwise returns the result
produced by the supplying function.
|
T |
orElseThrow() |
If a value is present, returns the value, otherwise throws
NoSuchElementException. |
<X extends Throwable> |
orElseThrow(Supplier<? extends X> exceptionSupplier) |
If a value is present, returns the value, otherwise throws an exception
produced by the exception supplying function.
|
Stream<T> |
stream() |
If a value is present, returns a sequential
Stream containing
only that value, otherwise returns an empty Stream. |
String |
toString() |
Returns a non-empty string representation of this
Optional
suitable for debugging. |
public static <T> Optional<T> empty()
Optional instance. No value is present for this
Optional.== against instances returned by
Optional.empty(). There is no guarantee that it is a singleton.
Instead, use isPresent().T - The type of the non-existent valueOptionalpublic static <T> Optional<T> of(T value)
Optional describing the given non-null
value.T - the type of the valuevalue - the value to describe, which must be non-nullOptional with the value presentNullPointerException - if value is nullpublic static <T> Optional<T> ofNullable(T value)
Optional describing the given value, if
non-null, otherwise returns an empty Optional.T - the type of the valuevalue - the possibly-null value to describeOptional with a present value if the specified value
is non-null, otherwise an empty Optionalpublic T get()
NoSuchElementException.orElseThrow().null value described by this OptionalNoSuchElementException - if no value is presentpublic boolean isPresent()
true, otherwise false.true if a value is present, otherwise falsepublic boolean isEmpty()
true, otherwise
false.true if a value is not present, otherwise falsepublic void ifPresent(Consumer<? super T> action)
action - the action to be performed, if a value is presentNullPointerException - if value is present and the given action is
nullpublic void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)
action - the action to be performed, if a value is presentemptyAction - the empty-based action to be performed, if no value is
presentNullPointerException - if a value is present and the given action
is null, or no value is present and the given empty-based
action is null.public Optional<T> filter(Predicate<? super T> predicate)
Optional describing the value, otherwise returns an
empty Optional.predicate - the predicate to apply to a value, if presentOptional describing the value of this
Optional, if a value is present and the value matches the
given predicate, otherwise an empty OptionalNullPointerException - if the predicate is nullpublic <U> Optional<U> map(Function<? super T,? extends U> mapper)
Optional describing (as if by
ofNullable(T)) the result of applying the given mapping function to
the value, otherwise returns an empty Optional.
If the mapping function returns a null result then this method
returns an empty Optional.
Optional values, without
the need to explicitly check for a return status. For example, the
following code traverses a stream of URIs, selects one that has not
yet been processed, and creates a path from that URI, returning
an Optional<Path>:
Optional<Path> p =
uris.stream().filter(uri -> !isProcessedYet(uri))
.findFirst()
.map(Paths::get);
Here, findFirst returns an Optional<URI>, and then
map returns an Optional<Path> for the desired
URI if one exists.U - The type of the value returned from the mapping functionmapper - the mapping function to apply to a value, if presentOptional describing the result of applying a mapping
function to the value of this Optional, if a value is
present, otherwise an empty OptionalNullPointerException - if the mapping function is nullpublic <U> Optional<U> flatMap(Function<? super T,? extends Optional<? extends U>> mapper)
Optional-bearing mapping function to the value, otherwise returns
an empty Optional.
This method is similar to map(Function), but the mapping
function is one whose result is already an Optional, and if
invoked, flatMap does not wrap it within an additional
Optional.
U - The type of value of the Optional returned by the
mapping functionmapper - the mapping function to apply to a value, if presentOptional-bearing mapping
function to the value of this Optional, if a value is
present, otherwise an empty OptionalNullPointerException - if the mapping function is null or
returns a null resultpublic Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)
Optional describing the value,
otherwise returns an Optional produced by the supplying function.supplier - the supplying function that produces an Optional
to be returnedOptional describing the value of this
Optional, if a value is present, otherwise an
Optional produced by the supplying function.NullPointerException - if the supplying function is null or
produces a null resultpublic Stream<T> stream()
Stream containing
only that value, otherwise returns an empty Stream.Stream of optional
elements to a Stream of present value elements:
Stream<Optional<T>> os = ..
Stream<T> s = os.flatMap(Optional::stream)
Streampublic T orElse(T other)
other.other - the value to be returned, if no value is present.
May be null.otherpublic T orElseGet(Supplier<? extends T> supplier)
supplier - the supplying function that produces a value to be returnedNullPointerException - if no value is present and the supplying
function is nullpublic T orElseThrow()
NoSuchElementException.null value described by this OptionalNoSuchElementException - if no value is presentpublic <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X
IllegalStateException::newX - Type of the exception to be thrownexceptionSupplier - the supplying function that produces an
exception to be thrownX - if no value is presentNullPointerException - if no value is present and the exception
supplying function is nullX extends Throwablepublic boolean equals(Object obj)
Optional.
The other object is considered equal if:
Optional and;
equals().
equals in class Objectobj - an object to be tested for equalitytrue if the other object is "equal to" this object
otherwise falseObject.hashCode(),
HashMappublic int hashCode()
0
(zero) if no value is present.hashCode in class Object0 if no value is
presentObject.equals(java.lang.Object),
System.identityHashCode(java.lang.Object)public String toString()
Optional
suitable for debugging. The exact presentation format is unspecified and
may vary between implementations and versions.Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2025, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.
| Web Proxy Viewer | New URL | Original Page |