10.2 Optional类入门

变量存在时,Optional类对变量简单封装。

变量不存在时,创建一个Optional空对象——Optional.empty()

Optional.empty()与null的区别:

  1. Optional.empty()多种场景可调用,而null一定会触发NPE;
  2. 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的检查只会掩盖问题,并未真正地修复问题。

能非常清晰地界定出变量值的缺失是结构上的问题,算法上的缺陷,还是数据中的问题。

posted @ 2023-05-28 14:03  蒋智  阅读(21)  评论(0)    收藏  举报