第8章 第55条谨慎返回optional

由于创建异常时会捕捉整个堆栈轨迹,因此抛出异常的开销很高。如果方法返回null,客户端就必须包含特殊的代码来处理返回null的可能性,除非程序员能证明不可能返回null。第三种方法:Optional类代表的是一个不可变的容器,它可以存放单个非null的T引用,或者什么内容都没有。

1.永远不要通过返回Optional的方法返回null。
2.容器类型比如集合、映射、Stream、数组等,都不改包装进optional。
3.如果无法返回结果并且当没有返回时客户端必须执行特殊的处理,那么就应该声明该方法返回Optional
4.永远不应该返回基本包装类型的optional。
5.几乎永远都不适合用optional作为键、值,或者集合或数组中的元素。
6.Optional是一个必须进行分配和初始化的对象,从optional读取值时需要额外的开销。这使得optional不适用于一些注重性能的情况。

思考:Optional 相较于返回null或者抛出异常,最重要的有点在于准确描述了不一定有值的情况,且提醒处理为空的情况,防止因为遗忘导致在远离root cause的地方抛错。

你可能感兴趣的:(第8章 第55条谨慎返回optional)