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 OptionalLongempty()返回一个空的OptionalLong实例。boolean指示某个其他对象是否“等于”此OptionalLong。long如果存在值,则返回该值,否则抛出NoSuchElementException。inthashCode()返回值的哈希码,如果存在值,则返回该值的哈希码,否则返回0。voidifPresent(LongConsumer action) 如果存在值,则使用该值执行给定操作,否则不执行任何操作。voidifPresentOrElse(LongConsumer action, Runnable emptyAction) 如果存在值,则使用该值执行给定操作,否则执行给定的基于空值的操作。booleanisEmpty()如果值不存在,则返回true,否则返回false。boolean如果存在值,则返回true,否则返回false。static OptionalLongof(long value) 返回描述给定值的OptionalLong。longorElse(long other) 如果存在值,则返回该值,否则返回other。longorElseGet(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的非空字符串表示形式,适用于调试。确切的表示格式未指定,可能会在实现和版本之间有所不同。
-