java.lang.Object
java.util.OptionalLong
一个容器对象,可能包含或不包含
long
值。如果存在值,则isPresent()
返回true
。如果没有值,则对象被视为空,isPresent()
返回false
。
提供了依赖于包含值的存在或不存在的其他方法,例如orElse()
(如果没有值,则返回默认值)和ifPresent()
(如果存在值,则执行操作)。
这是一个基于值的类;程序员应该将相等的实例视为可互换,并且不应将实例用于同步,否则可能会发生不可预测的行为。例如,在将来的版本中,同步可能会失败。
- API 注意:
-
OptionalLong
主要用作方法返回类型,其中明确需要表示“无结果”。类型为OptionalLong
的变量本身不应为null
;它应始终指向一个OptionalLong
实例。 - 自版本:
- 1.8
-
Method Summary
Modifier and TypeMethodDescriptionstatic OptionalLong
empty()
返回一个空的OptionalLong
实例。boolean
指示某个其他对象是否“等于”此OptionalLong
。long
如果存在值,则返回该值,否则抛出NoSuchElementException
。int
hashCode()
返回值的哈希码,如果存在值,则返回该值的哈希码,否则返回0
。void
ifPresent
(LongConsumer action) 如果存在值,则使用该值执行给定操作,否则不执行任何操作。void
ifPresentOrElse
(LongConsumer action, Runnable emptyAction) 如果存在值,则使用该值执行给定操作,否则执行给定的基于空值的操作。boolean
isEmpty()
如果值不存在,则返回true
,否则返回false
。boolean
如果存在值,则返回true
,否则返回false
。static OptionalLong
of
(long value) 返回描述给定值的OptionalLong
。long
orElse
(long other) 如果存在值,则返回该值,否则返回other
。long
orElseGet
(LongSupplier supplier) 如果存在值,则返回该值,否则返回由提供函数生成的结果。long
如果存在值,则返回该值,否则抛出NoSuchElementException
。<X extends Throwable>
longorElseThrow
(Supplier<? extends X> exceptionSupplier) 如果存在值,则返回该值,否则抛出由异常提供函数生成的异常。stream()
如果存在值,则返回仅包含该值的顺序LongStream
,否则返回空的LongStream
。toString()
返回此OptionalLong
的非空字符串表示形式,适用于调试。
-
Method Details
-
empty
返回一个空的OptionalLong
实例。对于此OptionalLong
,不存在值。- API 注意:
-
尽管这样做可能很诱人,但避免通过与
OptionalLong.empty()
返回的实例进行==
或!=
比较来测试对象是否为空。不能保证它是单例的。而是使用isEmpty()
或isPresent()
。 - 返回:
-
一个空的
OptionalLong
。
-
of
返回描述给定值的OptionalLong
。- 参数:
-
value
- 要描述的值 - 返回:
-
一个具有值的
OptionalLong
-
getAsLong
public long getAsLong()如果存在值,则返回该值,否则抛出NoSuchElementException
。- API 注意:
-
此方法的首选替代方法是
orElseThrow()
。 - 返回:
-
由此
OptionalLong
描述的值 - 抛出:
-
NoSuchElementException
- 如果不存在值
-
isPresent
public boolean isPresent()如果存在值,则返回true
,否则返回false
。- 返回:
-
如果存在值,则返回
true
,否则返回false
-
isEmpty
public boolean isEmpty()如果不存在值,则返回true
,否则返回false
。- 返回:
-
如果不存在值,则返回
true
,否则返回false
- 自版本:
- 11
-
ifPresent
如果存在值,则执行给定操作,否则不执行任何操作。- 参数:
-
action
- 如果存在值,则要执行的操作 - 抛出:
-
NullPointerException
- 如果存在值且给定操作为null
-
ifPresentOrElse
如果存在值,则执行给定操作,否则执行给定基于空值的操作。- 参数:
-
action
- 如果存在值,则要执行的操作 -
emptyAction
- 如果不存在值,则要执行的基于空值的操作 - 抛出:
-
NullPointerException
- 如果存在值且给定操作为null
,或者不存在值且给定基于空值的操作为null
。 - 自版本:
- 9
-
stream
如果存在值,则返回一个顺序LongStream
,其中仅包含该值,否则返回一个空的LongStream
。- API 注意:
-
此方法可用于将可选长整型的
Stream
转换为仅包含存在长整型的LongStream
:Stream<OptionalLong> os = .. LongStream s = os.flatMapToLong(OptionalLong::stream)
- 返回:
-
作为
LongStream
的可选值 - 自版本:
- 9
-
orElse
public long orElse(long other) 如果存在值,则返回该值,否则返回other
。- 参数:
-
other
- 如果不存在值,则要返回的值 - 返回:
-
如果存在值,则返回该值,否则返回
other
-
orElseGet
如果存在值,则返回该值,否则返回由提供函数生成的结果。- 参数:
-
supplier
- 生成要返回的值的提供函数 - 返回:
- 如果存在值,则返回该值,否则返回提供函数生成的结果
- 抛出:
-
NullPointerException
- 如果不存在值且提供函数为null
-
orElseThrow
public long orElseThrow()如果存在值,则返回该值,否则抛出NoSuchElementException
。- 返回:
-
由此
OptionalLong
描述的值 - 抛出:
-
NoSuchElementException
- 如果不存在值 - 自版本:
- 10
-
orElseThrow
如果存在值,则返回该值,否则抛出由异常提供函数生成的异常。- API 注意:
-
可以使用对异常构造函数的方法引用作为提供函数。例如,
IllegalStateException::new
- 类型参数:
-
X
- 要抛出的异常类型 - 参数:
-
exceptionSupplier
- 生成要抛出的异常的提供函数 - 返回:
- 如果存在值,则返回该值
- 抛出:
-
X
- 如果不存在值 -
NullPointerException
- 如果不存在值且异常提供函数为null
-
equals
指示某个其他对象是否“等于”此OptionalLong
。如果满足以下条件,则认为另一个对象相等:- 它也是一个
OptionalLong
且; - 两个实例都没有值或;
- 通过
==
,存在的值“相等”。
- 它也是一个
-
hashCode
public int hashCode()返回值的哈希码,如果存在值,则返回该值的哈希码,否则返回0
。 -
toString
返回此OptionalLong
的非空字符串表示形式,适用于调试。确切的表示格式未指定,可能会在实现和版本之间有所不同。
-