作者JustinHere (良葛格)
看板java
标题Re: [心得] Java8的Optional心得建议
时间Fri Aug 8 11:14:03 2014
※ 引述《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://webptt.com/cn.aspx?n=bbs/java/M.1407467652.A.C9F.html
※ 编辑: JustinHere (101.14.109.205), 08/08/2014 11:16:21
1F:推 Killercat:其实Objects.firstNotNull也算亡羊补牢 XD 08/08 16:10
2F:→ Killercat:只是语法上并没有那麽直关就是 08/08 16:10