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-bearing映射函数,返回结果,否则返回一个空
Optional。
|
T |
get()
如果一个值是在这
Optional,返回值,否则将
NoSuchElementException。
|
int |
hashCode()
返回当前值的哈希代码值,如果有的话,或0(0),如果没有价值。
|
void |
ifPresent(Consumer<? super T> consumer)
如果一个值存在,调用指定的值的指定的用户,否则什么都不做。
|
boolean |
isPresent()
返回
true如果有存在价值,否则
false。
|
<U> Optional<U> |
map(Function<? super T,? extends U> mapper)
如果一个值是存在的,申请提供的映射函数,如果结果不为空,返回一个
Optional描述结果。
|
static <T> Optional<T> |
of(T value)
返回与指定非空值的
Optional目前。
|
static <T> Optional<T> |
ofNullable(T value)
返回一个
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目前。
T -值的类
value -存在的价值,它必须是非空
Optional
NullPointerException如果值为空
public static <T> Optional<T> ofNullable(T value)
Optional描述指定的值,如果非零,则返回一个空
Optional。
T -值的类
value -可能的空值来描述
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<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
NullPointerException如果映射函数为零
public <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)
Optional-bearing映射函数,返回结果,否则返回一个空
Optional。这种方法类似于
map(Function),但是提供的映射是一个其结果已经是一个
Optional,如果调用,
flatMap裹不住它一个额外的
Optional。
U -类型参数的
Optional返回
mapper -映射函数应用到价值,如果目前的映射函数
Optional-bearing映射功能,这
Optional值的结果,如果一个值是存在的,否则一个空
Optional
NullPointerException如果映射函数为零或返回空结果
public T orElse(T other)
other。
other -是没有存在价值的返回值,可能是空的
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.