提示五十五:谨慎返回optional

第55条:谨慎返回optional。

  1. 集合、映射、Stream、数组、Optional都不应该包装在Optional中。
  2. 如果无法返回结果并且当没有返回结果时客户端必须执行特殊得处理,那么就应该声明这个方法返回Optional<T>。
  3. Optional会有一定的性能开销,如果注重性能则需要慎重考虑Optional。
  4. 永远不应该返回基本包装类型的Optional。
  5. 尽量不要把Optional用作返回值以外的其它用途。
  6. Optional是一个必须进行分配和初始化的对象,从optional读取值时需要额外的开销。这使得optional不适用于一些注重性能的情况。

平时写代码的时候一般用到Optional的时候要么是和Stream一起,要么是使用Optional.ofNullable来处理一些可能为空的值,通过orelse可以避免分类讨论。单独使用确实比较少,更别提当做返回结果了。我感觉拿到Optional以后还是需要考虑空的问题,这比直接返回null可能好在强制用户去处理可能的空值?而且Optional.of完全无法接受null,所以使用Optional的时候还是需要慎重。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在Java8之前,要编写一个在特定环境下无法返回任何值的方法时,有两种方法:要么抛出异常,要么返回null(假设返...
    taogan阅读 2,304评论 0 0
  • 由于创建异常时会捕捉整个堆栈轨迹,因此抛出异常的开销很高。如果方法返回null,客户端就必须包含特殊的代码来处理返...
    丁松杰阅读 158评论 0 0
  • 一、Optional类的来源 到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因。以前,为了解...
    小波同学阅读 1,550评论 0 6
  • Optional的学习与实战 整片文章大部分内容来自java8实战这本书,我在这里也是将自己的学习过程记录下来,并...
    Java大宝宝阅读 2,966评论 2 0
  • 新特性总览 lambda表达式 Stream操作数组 Optional取代null 简洁的并发编程 LocalDa...
    androidjp阅读 2,685评论 0 6