- java.lang.Object
-
- java.util.OptionalDouble
-
public final class OptionalDouble extends Object
可能包含或可能不包含double
值的容器对象。 如果存在值,则isPresent()
返回true
,返回值getAsDouble()
。提供依赖于包含值的存在或不存在的附加方法,例如
orElse()
(如果没有值,则返回默认值)和ifPresent()
(如果值存在则执行操作)。这是一个value-based课; 对于
OptionalDouble
实例,使用身份敏感操作(包括引用等式(==
),身份哈希码或同步)可能会产生不可预测的结果,应该避免。- API Note:
-
OptionalDouble
主要用作方法返回类型,其中明确需要表示“无结果”。 类型为OptionalDouble
变量本身不应为null
; 它应该总是指向一个OptionalDouble
实例。 - 从以下版本开始:
- 1.8
-
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 static OptionalDouble
empty()
返回一个空的OptionalDouble
实例。boolean
equals(Object obj)
指示某个其他对象是否等于此OptionalDouble
。double
getAsDouble()
如果值存在,则返回值,否则抛出NoSuchElementException
。int
hashCode()
返回值的哈希码,如果存在,否则为0
(零),如果不存在值。void
ifPresent(DoubleConsumer action)
如果存在值,则使用该值执行给定的操作,否则不执行任何操作。void
ifPresentOrElse(DoubleConsumer action, Runnable emptyAction)
如果存在值,则使用该值执行给定的操作,否则执行给定的基于空的操作。boolean
isPresent()
如果存在值,则返回true
,否则为false
。static OptionalDouble
of(double value)
返回描述给定值的OptionalDouble
。double
orElse(double other)
如果存在值,返回值,否则返回other
。double
orElseGet(DoubleSupplier supplier)
如果存在值,则返回值,否则返回由供应函数产生的结果。<X extends Throwable>
doubleorElseThrow(Supplier<? extends X> exceptionSupplier)
如果存在值,则返回值,否则将抛出由异常提供函数产生的异常。DoubleStream
stream()
如果存在值,则返回仅包含该值的序列DoubleStream
,否则返回空DoubleStream
。String
toString()
返回适用于调试的OptionalDouble
的非空字符串表示形式。
-
-
-
方法详细信息
-
empty
public static OptionalDouble empty()
返回一个空的OptionalDouble
实例。 这个OptionalDouble
没有价值。- API Note:
-
虽然它可能是很有诱惑力的话,避免测试如果一个对象是通过比较空
==
对抗返回实例OptionalDouble.empty()
。 不能保证是单身人士。 相反,请使用isPresent()
。 - 结果
-
一个空的
OptionalDouble
。
-
of
public static OptionalDouble of(double value)
返回描述给定值的OptionalDouble
。- 参数
-
value
- 要描述的值 - 结果
-
一个
OptionalDouble
的价值存在
-
getAsDouble
public double getAsDouble()
如果值存在,则返回值,否则抛出NoSuchElementException
。- API Note:
-
方法
orElse
和orElseGet
通常优于该方法,因为如果该值不存在则返回替代值,而不是抛出异常。 - 结果
-
该值由此描述
OptionalDouble
- 异常
-
NoSuchElementException
- 如果没有值 - 另请参见:
-
isPresent()
-
isPresent
public boolean isPresent()
如果值存在,则返回true
,否则为false
。- 结果
-
true
如果一个值存在,否则false
-
ifPresent
public void ifPresent(DoubleConsumer action)
如果存在值,则使用该值执行给定的操作,否则不执行任何操作。- 参数
-
action
- 要执行的操作,如果值存在 - 异常
-
NullPointerException
- 如果值存在且给定的操作是null
-
ifPresentOrElse
public void ifPresentOrElse(DoubleConsumer action, Runnable emptyAction)
如果存在值,则使用该值执行给定的操作,否则执行给定的基于空的操作。- 参数
-
action
- 要执行的操作,如果值存在 -
emptyAction
- 要执行的基于空的操作,如果没有值 - 异常
-
NullPointerException
- 如果存在值且给定的操作是null
,或者没有值,而给定的基于空的操作是null
。 - 从以下版本开始:
- 9
-
stream
public DoubleStream stream()
如果存在值,则返回仅包含该值的序列DoubleStream
,否则返回空DoubleStream
。- API Note:
-
此方法可用于将
Stream
的可选双精度DoubleStream
为目前双打的DoubleStream
:Stream<OptionalDouble> os = .. DoubleStream s = os.flatMapToDouble(OptionalDouble::stream)
- 结果
-
可选值为
DoubleStream
- 从以下版本开始:
- 9
-
orElse
public double orElse(double other)
如果存在值,则返回值,否则返回other
。- 参数
-
other
- 如果没有值,则返回的值 - 结果
-
该值,如果存在,否则为
other
-
orElseGet
public double orElseGet(DoubleSupplier supplier)
如果存在值,则返回值,否则返回由供应函数产生的结果。- 参数
-
supplier
- 产生要返回的值的供应函数 - 结果
- 该值(如果存在),否则由供应功能产生的结果
- 异常
-
NullPointerException
- 如果没有值,提供功能是null
-
orElseThrow
public <X extends Throwable> double orElseThrow(Supplier<? extends X> exceptionSupplier) throws X extends Throwable
如果存在值,则返回值,否则将抛出由异常提供函数产生的异常。- API Note:
-
可以使用具有空参数列表的异常构造函数的方法引用作为供应商。
例如,
IllegalStateException::new
- 参数类型
-
X
- 要抛出的异常的类型 - 参数
-
exceptionSupplier
- 产生要抛出异常的供应函数 - 结果
- 价值,如果存在
- 异常
-
X
- 如果没有值 -
NullPointerException
- 如果没有值,异常提供功能是null
-
X extends Throwable
-
equals
public boolean equals(Object obj)
指示某个其他对象是否等于此OptionalDouble
。 另一个对象被认为是相等的:- 它也是一个
OptionalDouble
和; - 或者;
- 当前值通过
Double.compare() == 0
彼此“相等”。
- 重写:
-
equals
在Object
- 参数
-
obj
- 要测试的对象的相等性 - 结果
-
true
如果另一个对象是“等于”这个对象否则false
- 另请参见:
-
Object.hashCode()
,HashMap
- 它也是一个
-
hashCode
public int hashCode()
返回值的哈希码(如果存在),否则,如果没有值,则0
(零)。- 重写:
-
hashCode
在Object
- 结果
-
当前值的哈希码值,如果没有值,则为
0
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-