10.2 Optional类入门
变量存在时,Optional类对变量简单封装。
变量不存在时,创建一个Optional空对象——Optional.empty()
Optional.empty()与null的区别:
- Optional.empty()多种场景可调用,而null一定会触发NPE;
- Optional
类型,显示声明了变量可能存在缺失;
public class Person {
// 可能缺失
private Optional<Car> car;
public Optional<Car> getCar() {
return car;
}
}
public class Car {
// 可能缺失
private Optional<Insurance> insurance;
public Optional<Insurance> getInsurance() {
return insurance;
}
}
public class Insurance {
// 必须存在
private String name;
public String getName() {
return name;
}
}
从方法签名中表现变量是否会缺失,驱使调用者考虑变量缺失情况下的处理方式。
不再需要为其添加null的检查,因为null的检查只会掩盖问题,并未真正地修复问题。
能非常清晰地界定出变量值的缺失是结构上的问题,算法上的缺陷,还是数据中的问题。

浙公网安备 33010602011771号