在开始之前,我们来探讨一下,Java中的null究竟指什么?
例如,Map.get(key)返回Null时,可能表示map中的值是null,亦或map中没有key对应的值。
Null可以表示失败、成功或几乎任何情况。使用Null以外的特定值,会让你的逻辑描述变得更清晰。
鉴于此,在Guava中的大多数集合类都支持对null的快速失败操作。
为了尽量避免程序中的null值,Guava提供了Optional对数据进行封装。如果值为空则立即抛出异常,并且提供了Absent和Present两个子类分别表示值缺失和值存在的情形,来增强null的语义。
创建Optional实例
为了创建Optional实例,Google给出了三种方法:
方法 | 语义 |
---|---|
Optional.of(T) | 创建指定引用的Optional实例,若引用为null则快速失败 |
Optional.absent() | 创建引用缺失的Optional实例 |
Optional.fromNullable(T) | 创建指定引用的Optional实例,若引用为null则表示缺失 |
下面分别来看看这三种创建实例方法的源码:
- of方法
public static <T> Optional<T> of(T reference) {