java.lang.Object
java.util.OptionalDouble
public final class OptionalDouble extends Object
A container object which may or may not contain a
double
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
OptionalDouble
may have unpredictable results and should be avoided.
- API Note:
OptionalDouble
is primarily intended for use as a method return type where there is a clear need to represent "no result." A variable whose type isOptionalDouble
should never itself benull
; it should always point to anOptionalDouble
instance.- Since:
- 1.8
-
Method Summary
Modifier and Type Method Description static OptionalDouble
empty()
Returns an emptyOptionalDouble
instance.boolean
equals(Object obj)
Indicates whether some other object is "equal to" thisOptionalDouble
.double
getAsDouble()
If a value is present, returns the value, otherwise throwsNoSuchElementException
.int
hashCode()
Returns the hash code of the value, if present, otherwise0
(zero) if no value is present.void
ifPresent(DoubleConsumer action)
If a value is present, performs the given action with the value, otherwise does nothing.void
ifPresentOrElse(DoubleConsumer 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, returnstrue
, otherwisefalse
.boolean
isPresent()
If a value is present, returnstrue
, otherwisefalse
.static OptionalDouble
of(double value)
Returns anOptionalDouble
describing the given value.double
orElse(double other)
If a value is present, returns the value, otherwise returnsother
.double
orElseGet(DoubleSupplier supplier)
If a value is present, returns the value, otherwise returns the result produced by the supplying function.double
orElseThrow()
If a value is present, returns the value, otherwise throwsNoSuchElementException
.<X extends Throwable>
doubleorElseThrow(Supplier<? extends X> exceptionSupplier)
If a value is present, returns the value, otherwise throws an exception produced by the exception supplying function.DoubleStream
stream()
If a value is present, returns a sequentialDoubleStream
containing only that value, otherwise returns an emptyDoubleStream
.String
toString()
Returns a non-empty string representation of thisOptionalDouble
suitable for debugging.
-
Method Details
-
empty
Returns an emptyOptionalDouble
instance. No value is present for thisOptionalDouble
.- API Note:
- Though it may be tempting to do so, avoid testing if an object is empty
by comparing with
==
against instances returned byOptionalDouble.empty()
. There is no guarantee that it is a singleton. Instead, useisPresent()
. - Returns:
- an empty
OptionalDouble
.
-
of
Returns anOptionalDouble
describing the given value.- Parameters:
value
- the value to describe- Returns:
- an
OptionalDouble
with the value present
-
getAsDouble
public double getAsDouble()If a value is present, returns the value, otherwise throwsNoSuchElementException
.- API Note:
- The preferred alternative to this method is
orElseThrow()
. - Returns:
- the value described by this
OptionalDouble
- Throws:
NoSuchElementException
- if no value is present
-
isPresent
public boolean isPresent()If a value is present, returnstrue
, otherwisefalse
.- Returns:
true
if a value is present, otherwisefalse
-
isEmpty
public boolean isEmpty()If a value is not present, returnstrue
, otherwisefalse
.- Returns:
true
if a value is not present, otherwisefalse
- Since:
- 11
-
ifPresent
If a value is present, performs the given action with the value, otherwise does nothing.- Parameters:
action
- the action to be performed, if a value is present- Throws:
NullPointerException
- if value is present and the given action isnull
-
ifPresentOrElse
If a value is present, performs the given action with the value, otherwise performs the given empty-based action.- Parameters:
action
- the action to be performed, if a value is presentemptyAction
- the empty-based action to be performed, if no value is present- Throws:
NullPointerException
- if a value is present and the given action isnull
, or no value is present and the given empty-based action isnull
.- Since:
- 9
-
stream
If a value is present, returns a sequentialDoubleStream
containing only that value, otherwise returns an emptyDoubleStream
.- API Note:
- This method can be used to transform a
Stream
of optional doubles to aDoubleStream
of present doubles:Stream<OptionalDouble> os = .. DoubleStream s = os.flatMapToDouble(OptionalDouble::stream)
- Returns:
- the optional value as a
DoubleStream
- Since:
- 9
-
orElse
public double orElse(double other)If a value is present, returns the value, otherwise returnsother
.- Parameters:
other
- the value to be returned, if no value is present- Returns:
- the value, if present, otherwise
other
-
orElseGet
If a value is present, returns the value, otherwise returns the result produced by the supplying function.- Parameters:
supplier
- the supplying function that produces a value to be returned- Returns:
- the value, if present, otherwise the result produced by the supplying function
- Throws:
NullPointerException
- if no value is present and the supplying function isnull
-
orElseThrow
public double orElseThrow()If a value is present, returns the value, otherwise throwsNoSuchElementException
.- Returns:
- the value described by this
OptionalDouble
- Throws:
NoSuchElementException
- if no value is present- Since:
- 10
-
orElseThrow
public <X extends Throwable> double orElseThrow(Supplier<? extends X> exceptionSupplier) throws X extends ThrowableIf a value is present, returns the value, otherwise throws an exception produced by the exception supplying function.- API Note:
- A method reference to the exception constructor with an empty argument
list can be used as the supplier. For example,
IllegalStateException::new
- Type Parameters:
X
- Type of the exception to be thrown- Parameters:
exceptionSupplier
- the supplying function that produces an exception to be thrown- Returns:
- the value, if present
- Throws:
X
- if no value is presentNullPointerException
- if no value is present and the exception supplying function isnull
X extends Throwable
-
equals
Indicates whether some other object is "equal to" thisOptionalDouble
. The other object is considered equal if:- it is also an
OptionalDouble
and; - both instances have no value present or;
- the present values are "equal to" each other via
Double.compare() == 0
.
- Overrides:
equals
in classObject
- Parameters:
obj
- an object to be tested for equality- Returns:
true
if the other object is "equal to" this object otherwisefalse
- See Also:
Object.hashCode()
,HashMap
- it is also an
-
hashCode
public int hashCode()Returns the hash code of the value, if present, otherwise0
(zero) if no value is present.- Overrides:
hashCode
in classObject
- Returns:
- hash code value of the present value or
0
if no value is present - See Also:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
toString
Returns a non-empty string representation of thisOptionalDouble
suitable for debugging. The exact presentation format is unspecified and may vary between implementations and versions.
-