Re: [心得] Java8的Optional心得建議

作者: JustinHere (良葛格)   2014-08-08 11:14:03
※ 引述《popcorny (畢業了..@@")》之銘言:
: 其實我覺得最簡單的原則應該是,
: 方法的傳入值,傳回值,field都不應該出現Optional
我在 Java TWO 的會上有談到 Optional:
http://www.codedata.com.tw/java/jdk8-functional-api/
其中談到 Optional 的作用之一是文件化,因此,傳回值型態上,如果你想要
明確提示 API 客戶端,必須檢查結果可能是空的情況時,可能就是使用 Optional
的時機。
因此,對於那些本身有定義「空」或「無值」的 API,像是 List,可以不使用
Optional<List>,而這些 API 在沒有結果時,應該傳回本身定義的「空」,例如
Collections.emptyList(),字串在這部份是比較尷尬,它有空字串的概念,不過
很多情況下,開發者在沒有結果而傳回型態是字串時,習慣傳回 null,這時選擇
就多了…
1. 統一傳回 null
2. 統一傳回 ""
3. 統一傳回 Optional<String>
對於前兩者,可以在不更動 API 的情況下,修改實作做到,像 guava-libraries,
提供了 emptyToNull 或 nullToEmpty 來這件事。
再來就是亡羊補牢判定法吧!對那些常常出現 NullPointerException 的地方,改用
Optional,這樣最簡單…顯然地,這些地方本身不改就會出問題了嘛…XD
作者: Killercat (殺人貓™)   2014-08-08 16:10:00
其實Objects.firstNotNull也算亡羊補牢 XD只是語法上並沒有那麼直關就是

Links booklink

Contact Us: admin [ a t ] ucptt.com