1、构造方式
Optional 的三种构造方式: Optional.of(obj), Optional.ofNullable(obj) 和 Optional.empty()1.1、Optional.of(obj)
它要求传入的 obj 不能是 null 值的, 否则 NullPointerException.
使用场景:1. 当我们非常非常的明确将要传给 Optional.of(obj) 的 obj 参数不可能为 null 时;
2. 当obj 为 null 立即报告 NullPointException 异常, 而不是隐藏空指针异常时.
1.2、Optional.ofNullable(obj)
传 null 进到就得到 Optional.empty(), 非 null 就调用 Optional.of(obj).
1.3、Optional.empty()
内部value是null
2、不推荐的使用方式
Optional<User> user = ……
if (user.isPresent()) {
return user.getOrders();
} else {
return Collections.emptyList();
}
这种方式和我们直接使用obj != null做判断没什么区别。实际上,当我们还在以如下几种方式使用 Optional 时, 就说明你的使用方式可能有问题:
(1)调用 isPresent() 方法时或者调用 get() 方法时。这两种方法应该认为是private的,你最好不要直接使用。
(2)Optional 类型作