public final class Optional<T> extends Object
isPresent()将返回true和get()将返回值。
提供依赖于存在或不存在包含值的其他方法,例如orElse() (如果值不存在则返回默认值)和ifPresent() (如果值存在则执行代码块)。
这是一个value-based课; 使用身份敏感的操作(包括引用相等(的==上的实例),标识哈希码,或同步) Optional可具有不可预测的结果,应当避免。
| Modifier and Type | Method and Description |
|---|---|
static <T> Optional<T> |
empty()
返回一个空的
Optional实例。
|
boolean |
equals(Object obj)
指示某个其他对象是否等于此可选项。
|
Optional<T> |
filter(Predicate<? super T> predicate)
如果一个值存在,并且该值给定的谓词相匹配时,返回一个
Optional描述的值,否则返回一个空的
Optional 。
|
<U> Optional<U> |
flatMap(Function<? super T,Optional<U>> mapper)
如果一个值存在,应用提供的
Optional映射函数给它,返回该结果,否则返回一个空的
Optional 。
|
T |
get()
如果
Optional中有一个值,返回值,否则抛出
NoSuchElementException 。
|
int |
hashCode()
返回当前值的哈希码值(如果有的话),如果没有值,则返回0(零)。
|
void |
ifPresent(Consumer<? super T> consumer)
如果存在值,则使用该值调用指定的消费者,否则不执行任何操作。
|
boolean |
isPresent()
返回
true如果存在值,否则为
false 。
|
<U> Optional<U> |
map(Function<? super T,? extends U> mapper)
如果存在一个值,则应用提供的映射函数,如果结果不为空,则返回一个
Optional结果的
Optional 。
|
static <T> Optional<T> |
of(T value)
返回具有
Optional的当前非空值的Optional。
|
static <T> Optional<T> |
ofNullable(T value)
返回一个
Optional指定值的Optional,如果非空,则返回一个空的
Optional 。
|
T |
orElse(T other)
返回值如果存在,否则返回
other 。
|
T |
orElseGet(Supplier<? extends T> other)
返回值(如果存在),否则调用
other并返回该调用的结果。
|
<X extends Throwable> |
orElseThrow(Supplier<? extends X> exceptionSupplier)
返回包含的值(如果存在),否则抛出由提供的供应商创建的异常。
|
String |
toString()
返回此可选的非空字符串表示,适用于调试。
|
public static <T> Optional<T> empty()
Optional实例。
此可选项不存在值。
Option.empty()与== ,则避免测试对象是否为空。
不能保证是单身人士。
相反,请使用isPresent() 。
T - 不存在值的类型
Optional
public static <T> Optional<T> of(T value)
Optional的当前非空值的Optional。
T - 该类的值
value - 要存在的值,它必须是非空值
Optional的值存在
NullPointerException - 如果值为空
public static <T> Optional<T> ofNullable(T value)
Optional指定值的Optional,如果非空,则返回一个空的
Optional 。
T - 该类的值
value - 可能为null的值来描述
Optional ,如果指定的值不为空,则为当前值,否则为空
Optional
public T get()
Optional中存在值,则返回值,否则抛出
NoSuchElementException 。
Optional非空值
NoSuchElementException - 如果没有值存在
isPresent()
public boolean isPresent()
true ,否则为
false 。
true若有存在值,否则为
false
public void ifPresent(Consumer<? super T> consumer)
consumer - 如果存在值,则执行块
NullPointerException - 如果值存在且
consumer为空
public Optional<T> filter(Predicate<? super T> predicate)
Optional描述的值,否则返回一个空的
Optional 。
predicate - 一个应用于该值的谓词(如果存在)
Optional描述此的值
Optional一个值是否存在,并且值给定的谓词相匹配,否则一个空
Optional
NullPointerException - 如果谓词为空
public <U> Optional<U> map(Function<? super T,? extends U> mapper)
Optional结果的Optional 。
否则返回一个空的Optional 。
Optional<FileInputStream> :
Optional<FileInputStream> fis = names.stream().filter(name -> !isProcessedYet(name)) .findFirst() .map(name -> new FileInputStream(name));
这里, findFirst返回一个Optional<String> ,然后map返回一个Optional<FileInputStream>为所需文件(如果存在)。
U - 映射函数的结果类型
mapper - 应用于值的映射函数(如果存在)
Optional描述了将映射函数应用于该值
Optional的值的
Optional ,如果存在值,否则为空
Optional
NullPointerException - 如果映射函数为空
public <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)
Optional映射函数给它,返回该结果,否则返回一个空的Optional 。
这种方法类似于map(Function) ,但是提供的映射器是一个结果已经是Optional映射器,如果被调用, flatMap不会用额外的Optional 。
U - 返回的
Optional的类型参数
mapper - 应用于值的映射函数,如果存在映射函数
Optional荷瘤映射函数此的值
Optional ,如果一个值存在,否则一个空
Optional
NullPointerException - 如果映射函数为空或返回空结果
public T orElse(T other)
other 。
other - 如果没有值存在则返回的值可以为null
other
public T orElseGet(Supplier<? extends T> other)
other并返回该调用的结果。
other - 一个
Supplier ,如果没有值,则返回其结果
other.get()
NullPointerException - 如果值不存在,并且
other为空
public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X extends Throwable
IllegalStateException::new
X - 要抛出的异常的类型
exceptionSupplier - 将返回要抛出的异常的供应商
X - 如果没有值存在
NullPointerException - 如果没有值,
exceptionSupplier为空
X extends Throwable
public boolean equals(Object obj)
Optional和; equals() “相等”。 equals在类别
Object
obj - 要进行相等测试的对象
false
Object.hashCode() , HashMap
public int hashCode()
hashCode在
Object
Object.equals(java.lang.Object) ,
System.identityHashCode(java.lang.Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.