- java.lang.Object
-
- java.util.OptionalLong
-
public final class OptionalLong extends Object
容器对象,可能包含也可能不包含long
值。 如果存在值,isPresent()
将返回true
。 如果没有值,则该对象被视为空 ,isPresent()
返回false
。提供了依赖于是否存在包含值的其他方法,例如
orElse()
(如果不存在值则返回默认值)和ifPresent()
(如果存在值则执行操作)。这是一个value-based类; 在
OptionalLong
实例上使用身份敏感操作(包括引用相等(==
),标识哈希码或同步)可能会产生不可预测的结果,应该避免使用。- API Note:
-
OptionalLong
主要用作方法返回类型,明确需要表示“无结果”。 类型为OptionalLong
变量本身不应该是null
; 它应始终指向OptionalLong
实例。 - 从以下版本开始:
- 1.8
-
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 static OptionalLong
empty()
返回一个空的OptionalLong
实例。boolean
equals(Object obj)
指示某个其他对象是否“等于”此OptionalLong
。long
getAsLong()
如果存在值,则返回该值,否则抛出NoSuchElementException
。int
hashCode()
返回值的哈希码(如果存在),否则0
(零)(如果不存在值)。void
ifPresent(LongConsumer action)
如果存在值,则使用值执行给定操作,否则不执行任何操作。void
ifPresentOrElse(LongConsumer action, Runnable emptyAction)
如果存在值,则使用值执行给定操作,否则执行给定的基于空的操作。boolean
isEmpty()
如果值不存在,则返回true
,否则返回false
。boolean
isPresent()
如果存在值,则返回true
,否则返回false
。static OptionalLong
of(long value)
返回描述给定值的OptionalLong
。long
orElse(long other)
如果存在值,则返回该值,否则返回other
。long
orElseGet(LongSupplier supplier)
如果存在值,则返回该值,否则返回由供应函数生成的结果。long
orElseThrow()
如果存在值,则返回该值,否则抛出NoSuchElementException
。<X extends Throwable>
longorElseThrow(Supplier<? extends X> exceptionSupplier)
如果存在值,则返回该值,否则抛出异常提供函数生成的异常。LongStream
stream()
如果存在值,则返回仅包含该值的顺序LongStream
,否则返回空LongStream
。String
toString()
返回适合调试的OptionalLong
的非空字符串表示形式。
-
-
-
方法详细信息
-
empty
public static OptionalLong empty()
返回一个空的OptionalLong
实例。 此OptionalLong
没有值。- API Note:
-
虽然它可能是很有诱惑力的话,避免测试如果一个对象是通过比较空
==
对抗返回实例OptionalLong.empty()
。 无法保证它是单身人士。 相反,请使用isPresent()
。 - 结果
-
空
OptionalLong
。
-
of
public static OptionalLong of(long value)
返回描述给定值的OptionalLong
。- 参数
-
value
- 要描述的值 - 结果
-
值
OptionalLong
-
getAsLong
public long getAsLong()
如果存在值,则返回该值,否则抛出NoSuchElementException
。- API Note:
-
该方法的优选替代方案是
orElseThrow()
。 - 结果
-
此
OptionalLong
描述的值 - 异常
-
NoSuchElementException
- 如果没有值
-
isPresent
public boolean isPresent()
如果存在值,则返回true
,否则返回false
。- 结果
-
true
如果存在值,否则为false
-
isEmpty
public boolean isEmpty()
如果值不存在,则返回true
,否则返回false
。- 结果
-
true
如果不存在值,否则为false
- 从以下版本开始:
- 11
-
ifPresent
public void ifPresent(LongConsumer action)
如果存在值,则使用值执行给定操作,否则不执行任何操作。- 参数
-
action
- 如果存在值,则执行的操作 - 异常
-
NullPointerException
- 如果存在值且给定操作为null
-
ifPresentOrElse
public void ifPresentOrElse(LongConsumer action, Runnable emptyAction)
如果存在值,则使用值执行给定操作,否则执行给定的基于空的操作。- 参数
-
action
- 如果存在值,则执行的操作 -
emptyAction
- 如果没有值,则执行基于空的操作 - 异常
-
NullPointerException
- 如果存在值且给定操作为null
,或者不存在任何值且给定的基于空的操作为null
。 - 从以下版本开始:
- 9
-
stream
public LongStream stream()
如果存在值,则返回仅包含该值的顺序LongStream
,否则返回空LongStream
。- API Note:
-
此方法可用于将
Stream
的可选longLongStream
为当前longs的LongStream
:Stream<OptionalLong> os = .. LongStream s = os.flatMapToLong(OptionalLong::stream)
- 结果
-
可选值为
LongStream
- 从以下版本开始:
- 9
-
orElse
public long orElse(long other)
如果存在值,则返回该值,否则返回other
。- 参数
-
other
- 如果没有值,则返回值 - 结果
-
值,如果存在,否则
other
-
orElseGet
public long orElseGet(LongSupplier supplier)
如果存在值,则返回该值,否则返回由供应函数生成的结果。- 参数
-
supplier
- 生成要返回的值的供应函数 - 结果
- 值,如果存在,否则由供应函数产生的结果
- 异常
-
NullPointerException
- 如果没有值且供应功能为null
-
orElseThrow
public long orElseThrow()
如果存在值,则返回该值,否则抛出NoSuchElementException
。- 结果
-
此
OptionalLong
描述的值 - 异常
-
NoSuchElementException
- 如果没有值 - 从以下版本开始:
- 10
-
orElseThrow
public <X extends Throwable> long 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)
指示某个其他对象是否“等于”此OptionalLong
。 如果符合以下条件,则认为另一个对- 它也是
OptionalLong
和; - 两个实例都没有价值或;
- 目前的值通过
==
相互“等于”。
- 重写:
-
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)
-
-