溫故 Java 8 中引入的 Optional 類
前言
為什麼要有Optional
類?(它試圖去解決什麼問題呢?)
答:Optional
類試圖去解決Java系統中大量出現的NullPointerException
問題和繁瑣的null
檢查。
使用
Optional
常用方法:
-
建立 Optional 物件,使用
of(T)
或者ofNullable(T)
,它們的不同點在於對於傳入的引數為null
時,是如何處理的。-
of(T)
如果傳入的引數為null
,會報NullPointerException
-
ofNullable(T)
如果傳入的引數為null
,它會返回一個empty
的Optional物件。
-
-
ifPresent()
判斷是否有值(不推薦直接使用這個方法,看看是否可以使用orElse(T)
方法) -
get()
獲取值;這個方法迷惑性比較大,如果直接呼叫,在沒有值的情況下,會報NoSuchElementException
異常。 -
設定預設值,
orElse(T)
或者orElseGet(T)
;orElseGet(T)
是orElse(T)
的延遲呼叫版。 -
orElseThrow(T)
沒有值的情況拋異常
filter()、map()、flatMap()
等方法就不記了,用法同 Java 8 的 Stream中的相關方法。
後記
未完待續。
參考資料
- ofollow,noindex">Tired of Null Pointer Exceptions? Consider Using Java SE 8's Optional!
- Java 8 Optional: How to Use it
- Guide To Java 8 Optional
- 10 Examples of Optional in Java 8
- Should Java 8 getters return optional type?