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; }
}
人可能有车,也可能没有车,因此将这个字段声明为Optional。车可能进行了保险,也可能没有保险,所以将这个字段声明为Optional。保险公司必须有名字,如果你遇到一个公司没有名称,你需要调查你的数据出了什么问题,而不应该再添加一段代码,将这个问题隐藏。
应用 Optional 的几种模式
- 创建 Optional 对象
- 声明一个空的Optional。你可以通过静态工厂方法Optional.empty,创建一个空的Optional对象
Optional<Car> optCar = Optional.empty();
- 依据一个非空值创建Optional。你还可以使用静态工厂方法Optional.of,依据一个非空值创建一个Optional对象
Optional<Car> optCar = Optional.of(car);
- 可接受null的Optional。使用静态工厂方法Optional.ofNullable,你可以创建一个允许null值的Optional
对象
Optional<Car> optCar = Optional.ofNullable(car);