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.