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

看板java作者 (良葛格)時間11年前 (2014/08/08 11:14), 11年前編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《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 -- 良葛格學習筆記 http://openhome.cc -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.14.109.205 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1407467652.A.C9F.html ※ 編輯: JustinHere (101.14.109.205), 08/08/2014 11:16:21

08/08 16:10, , 1F
其實Objects.firstNotNull也算亡羊補牢 XD
08/08 16:10, 1F

08/08 16:10, , 2F
只是語法上並沒有那麼直關就是
08/08 16:10, 2F
文章代碼(AID): #1Jv424oV (java)
討論串 (同標題文章)
文章代碼(AID): #1Jv424oV (java)