Optional 的基本用法


參考:

https://www.cnblogs.com/xingzc/p/5778090.html

http://www.runoob.com/java/java8-optional-class.html

 

empty static <T> Optional<T> empty()

返回空的 Optional 實例。

equals boolean equals(Object obj)

判斷其他對象是否等於 Optional。

filter Optional<T> filter(Predicate<? super <T> predicate)

如果值存在,並且這個值匹配給定的 predicate,返回一個Optional用以描述這個值,否則返回一個空的Optional。

flatMap <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)

如果值存在,返回基於Optional包含的映射方法的值,否則返回一個空的Optional

get T get()

如果在這個Optional中包含這個值,返回值,否則拋出異常:NoSuchElementException

hashCode int hashCode()

返回存在值的哈希碼,如果值不存在 返回 0。

ifPresent void ifPresent(Consumer<? super T> consumer)

如果值存在則使用該值調用 consumer , 否則不做任何事情。

isPresent boolean isPresent()

如果值存在則方法會返回true,否則返回 false。

map <U>Optional<U> map(Function<? super T,? extends U> mapper)

如果存在該值,提供的映射方法,如果返回非null,返回一個Optional描述結果。

of static <T> Optional<T> of(T value)

返回一個指定非null值的Optional。

ofNullable static <T> Optional<T> ofNullable(T value)

如果為非空,返回 Optional 描述的指定值,否則返回空的 Optional。

orElse T orElse(T other)

如果存在該值,返回值, 否則返回 other。

orElseGet T orElseGet(Supplier<? extends T> other)

如果存在該值,返回值, 否則觸發 other,並返回 other 調用的結果。

orElseThrow <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)

 

如果存在該值,返回包含的值,否則拋出由 Supplier 繼承的異常

toString String toString()

返回一個Optional的非空字符串,用來調試

 

Optional 可以解決空指針異常, 但是, 如果使用不到, 反而會引起更多的問題呢.

 

比如get 方法, 就可以出現NoSuchElementException , 這就不僅僅是null 的麻煩了, 而是直接出現了 npe, 麻蛋.

java.util.NoSuchElementException: No value present

at java.util.Optional.get(Optional.java:135)

null 有時候是無法避免的, 怎么辦? 進行isPresent 判斷嗎? 感覺更加麻煩了...  這樣吧:  orElse(null) 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM