Optional
Optional类型(P11)
Optional对象是一种包装器对象,要么包装了类型T的对象,要么没有包装任何对象。
Optional类型被当作一种更安全的方式,用来代替类型T的引用,这种引用要么引用某个对象,要么为null。但是,它只有在正确使用的情况下才会更安全。
如何使用Optional值(P11-12)
有效地使用Optional的关键是要使用这样的方法:它在值不存在的情况下会产生一个可代替物,而只在值存在的情况下才会使用这个值。
ifPresent方法会接受一个函数。如果该可选值存在,那么它会被传递给该函数。否则,不会发生任何事情。当调用ifPresent时,从该函数不会返回任何值。如果想要处理函数的结果,可以使用map。
java.util.Optional 8
T orElse(T other)
产生这个Optional的值,或者在该Optional为空时,产生other。
T orElseGet(Supplier<? extends T> other)
产生这个Optional的值,或者在该Optional为空时,产生调用other的结果。
T orElseThrow(Supplier<? extends x> exceptionSupplier)
产生这个Optional的值,或者在该Optional为空时,抛出调用exceptionSupplier的结果。
void ifPresent(Consumer<? super T> consumer)
如果该Optional不为空,那么就将它的值传递给consumer
\ Opional\ map(Function<? super T,? extends U> mapper)
产生将该Optional的值传递给mapper后的结果,只要这个Optional不为空且结果不为null,否则产生一个空Optional。
T get()
产生这个Optional的值,或者在该Optional为空时,抛出一个NoSuchElementException
boolean isPresent()
如果该Optional不为空,则返回true。
创建Optional值(P13-15)
java.util.Optional 8
static Optional of(T value)
static Optional ofNullable(T value)
产生一个具有给定值的Optional。如果value为null,那么第一个方法会抛出一个NullPointerException对象,第二个返方法会产生一个空Optional。
static Optional empty()
产生一个空Optional。
\ Optional\ flatMap(Function<? super T, Optional\> mapper)
产生将mapper应用于当前的Optional值所产生的结果,或者在当前Optional为空时,返回一个空Optional。
Last updated