引入一个新的类java.util.Optional<T>,这个类封装了Optional的值。
问题:什么时候要用Optional包裹字段,什么不应该用?
(1)应该用Optional的情况:当你认为这个字段可能为null,也可能部位null,或者你自己也不确定的情况。比如:一个人可能有车,也可能没有车,此时,你就应该用一个Optional类来包装,当值为null时对应的就是一个空的Optional对象。
(2)无需Optional的情况:就是你已经明确的知道,某个字段一定不为null,则无需用Optional。
代码如下:
class Person{
private Car car;
public Optional<Car> getCar(){
return Optional.ofNullable(car);
}
public void setCar(Car car) {
this.car = car;
}
}
class Car{
private Insurance insurance;
public Optional<Insurance> getInsurance(){
return Optional.ofNullable(insurance);
}
public void setInsurance(Insurance insurance) {
this.insurance = insurance;
}
}
class Insurance{
private String name;
public String getName(){
return name;
}
}
public class NullException {
public static String getCarInsuranceName(Optional<Person> person){
return person.flatMap(p->p.getCar())
.flatMap(car->car.getInsu