Optional
public final class Optional
extends Object
容器对象,其中可能包含或不包含非空值。 如果值存在, isPresent()
将返回true
和get()
将返回值。
还提供了依赖于包含值是否存在的其他方法,例如 orElse()
(如果值不存在,则返回默认值)和 ifPresent()
(如果值存在, ifPresent()
执行一个代码块)。
Summary
Public methods
empty
Optional<T> empty ()
返回一个空的Optional
实例。 此可选项不存在任何值。
API Note:
- Though it may be tempting to do so, avoid testing if an object is empty by comparing with
==
against instances returned by Option.empty()
. There is no guarantee that it is a singleton. Instead, use isPresent()
.
equals
boolean equals (Object obj)
指示某个其他对象是否“等于”this可选。 另一个对象被认为是相等的,如果:
- it is also an
Optional
and;
- both instances have no value present or;
- the present values are "equal to" each other via
equals()
.
Parameters |
obj |
Object : an object to be tested for equality |
Returns |
boolean |
{code true} if the other object is "equal to" this object otherwise false |
filter
Optional<T> filter (Predicate<? super T> predicate)
如果存在一个值,并且该值与给定的谓词匹配,则返回描述该值的 Optional
,否则返回一个空的 Optional
。
Parameters |
predicate |
Predicate : a predicate to apply to the value, if present |
Returns |
Optional<T> |
an Optional describing the value of this Optional if a value is present and the value matches the given predicate, otherwise an empty Optional |
flatMap
Optional<U> flatMap (Function<? super T, Optional<U>> mapper)
如果存在值,则应用提供的Optional
映射函数,返回该结果,否则返回空Optional
。 此方法类似于map(Function)
,但所提供的映射器的结果已经是Optional
,如果调用,则flatMap
不会将其封装为额外的Optional
。
Parameters |
mapper |
Function : a mapping function to apply to the value, if present the mapping function |
Returns |
Optional<U> |
the result of applying an Optional -bearing mapping function to the value of this Optional , if a value is present, otherwise an empty Optional |
get
T get ()
如果此值存在于此 Optional
,则返回该值,否则将抛出 NoSuchElementException
。
Returns |
T |
the non-null value held by this Optional |
hashCode
int hashCode ()
返回当前值的哈希码值(如果有的话),如果没有值,则返回0(零)。
Returns |
int |
hash code value of the present value or 0 if no value is present |
ifPresent
void ifPresent (Consumer<? super T> consumer)
如果存在值,则使用该值调用指定的消费者,否则不执行任何操作。
Parameters |
consumer |
Consumer : block to be executed if a value is present |
isPresent
boolean isPresent ()
如果存在值,则返回 true
,否则 false
。
Returns |
boolean |
true if there is a value present, otherwise false |
map
Optional<U> map (Function<? super T, ? extends U> mapper)
如果存在值,则将所提供的映射函数应用于该函数,如果结果不为空,则返回描述结果的Optional
。 否则返回一个空的Optional
。
Parameters |
mapper |
Function : a mapping function to apply to the value, if present |
Returns |
Optional<U> |
an Optional describing the result of applying a mapping function to the value of this Optional , if a value is present, otherwise an empty Optional |
of
Optional<T> of (T value)
用指定的当前非空值返回 Optional
。
Parameters |
value |
T : the value to be present, which must be non-null |
Returns |
Optional<T> |
an Optional with the value present |
ofNullable
Optional<T> ofNullable (T value)
返回描述指定值的 Optional
,如果非null,则返回空 Optional
。
Parameters |
value |
T : the possibly-null value to describe |
Returns |
Optional<T> |
an Optional with a present value if the specified value is non-null, otherwise an empty Optional |
orElse
T orElse (T other)
返回值如果存在,否则返回 other
。
Parameters |
other |
T : the value to be returned if there is no value present, may be null |
Returns |
T |
the value, if present, otherwise other |
orElseGet
T orElseGet (Supplier<? extends T> other)
返回值如果存在,否则调用 other
并返回该调用的结果。
Parameters |
other |
Supplier : a Supplier whose result is returned if no value is present |
Returns |
T |
the value if present otherwise the result of other.get() |
orElseThrow
T orElseThrow (Supplier<? extends X> exceptionSupplier)
返回包含的值(如果存在),否则抛出由提供的供应商创建的异常。
API Note:
- A method reference to the exception constructor with an empty argument list can be used as the supplier. For example,
IllegalStateException::new
Parameters |
exceptionSupplier |
Supplier : The supplier which will return the exception to be thrown |
Returns |
T |
the present value |
toString
String toString ()
返回适用于调试的此可选的非空字符串表示形式。 确切的表示格式是未指定的,并且在实现和版本之间可能有所不同。
实现要求:
- If a value is present the result must include its string representation in the result. Empty and present Optionals must be unambiguously differentiable.
Returns |
String |
the string representation of this instance |