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