在之前的一篇文章《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 来表示这种情况极有可能导致错误的情况下使用最好。总结来说有以下几点
- Optional 是用来作为方法返回值的
- Optional 是为了明确地表达返回值中存在“无结果”的可能性
- 如果这个“无结果”通过返回 null来表示 很可能导致调用端产生错误(尤其是NullPointerException)
通过这样分析就能够理解到这个类的主要用途了
1. 不应该把这个当做空指针判断的通用替代方案
2. 应该在设计方法接口时针对返回值做出语义性的说明,来表示该方法存在“无结果”的可能