Java 8 | Optional
Java
應用中最常見的bug
就是空值異常。在Java 8
之前,Google Guava
引入了Optionals
類來解決NullPointerException
,從而避免源碼被各種null
檢查污染,以便開發者寫出更加整潔的程式碼。
Java 8
也將Optional加入了官方庫。
Optional
僅僅是一個容易:存放T
類型的值或者null
。它提供了一些有用的接口來避免顯式的null
檢查,可以參考Java 8
官方文件了解更多細節。
使用Optional的例子:可能為空的值或者某個類型的值:
1 | Optional< String > fullName = Optional.ofNullable( null ); |
輸出的結果為:
1 | Full Name is set? false |
如果Optional
實例持有一個非空值,則isPresent()
方法返回true
,否則返回false
;orElseGet()
方法,Optional
實例持有null
,則可以接受一個lambda
表達式生成的默認值;map()
方法可以將現有的Optional
實例的值轉換成新的值;orElse()
方法與orElseGet()
方法類似,但是在持有null
的時候返回傳入的默認值。
另一個例子:
1 | Optional< String > firstName = Optional.of( "Morose" ); |
輸出的結果為:
1 | First Name is set? true |
註:更詳細的內容,可以參考官方文件
註:以上參考了
Java 8 Lambda新語法,簡化程式,增強效能
Java 8 新特性
Java 8的新特性—终极版
现代化 Java - Java8 指南