Java8新特性系列-Optional有什么意义?(解答)

By | 2022年2月15日

在之前的一篇文章《Java8新特性系列-Optional有什么意义?》中,对Optional做了一些阐述,不是很明白这个类到底是为了解决什么问题而存在,原文是如下描述的

Optional is intended to provide a limited mechanism for library method return types where there needed to be a clear way to represent “no result," and using null for such was overwhelmingly likely to cause errors.

意思是说,Optional 旨在为库里面方法返回类型提供一种有限制的机制,在需要一种明确的方式来表示“无结果”,并且使用 null 来表示这种情况极有可能导致错误的情况下使用最好。总结来说有以下几点

  1. Optional 是用来作为方法返回值的
  2. Optional 是为了明确地表达返回值中存在“无结果”的可能性
  3. 如果这个“无结果”通过返回 null来表示 很可能导致调用端产生错误(尤其是NullPointerException)

通过这样分析就能够理解到这个类的主要用途了

1. 不应该把这个当做空指针判断的通用替代方案

2. 应该在设计方法接口时针对返回值做出语义性的说明,来表示该方法存在“无结果”的可能