第55条 谨慎返回optional
- 集合、映射、
Stream
、数组、Optional
都不应该包装在Optional
中 - 如果无法返回结果并且当没有返回结果时客户端必须执行特殊得处理,那么就应该声明这个方法返回
Optional<T>
-
Optional
会有一定的性能开销,如果注重性能则需要慎重考虑Optional
- 永远不应该返回基本包装类型的
Optional
- 如果发现自己在编写的方法并不会一直有返回值,并且该方法的调用者都需要考虑没有返回值的可能性,这个方法或许应该返回
Optional
。如果注重性能最好返回null
或者直接抛出异常 - 尽量不要把
Optional
用作返回值以外的其它用途
思考
之前讨论过返回值要不要是Optional
,现在来看其实Optional
有非常大的优点。直接返回null
容易导致NPE,如果抛出异常的话还需要调用方手动catch。并且如果调用者没有翻看实现,方法上也没有标注这个方法会抛出异常的话,会block住后面的主流程。
返回Optional
就可以表达出来不一定有返回值的情况,提醒调用者需要判断为空的场景
网友评论