T - the type of valuepublic final class Optional<T> extends Object
null value.
If a value is present, isPresent() returns true and
get() returns the value.
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.
| Modifier and Type | Method and 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 |
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.
|
<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.
API Note:
Though it may be tempting to do so, avoid testing if an object is empty
by comparing with == 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.null value described by this OptionalNoSuchElementException - if no value is presentisPresent()public boolean isPresent()
true, otherwise false.true if a value is 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 the 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.
API Note:
This method supports post-processing on 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.
API Note:
This method can be used to transform a 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 nullotherpublic T orElseGet(Supplier<? extends T> supplier)
supplier - the supplying function that produces a value to be returnedNullPointerException - if value is not present and the supplying
function is nullpublic <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X extends Throwable
API Note:
A method reference to the exception constructor with an empty argument
list can be used as the supplier. For example,
IllegalStateException::new
X - 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().
public int hashCode()
0
(zero) if no value is present.public String toString()
Optional
suitable for debugging. The exact presentation format is unspecified and
may vary between implementations and versions.
Implementation Requirements:
If a value is present the result must include its string representation
in the result. Empty and present Optionals must be unambiguously
differentiable.
Copyright © 2016. All rights reserved.