最近在学习java的Optional,介绍中感觉Optional好强大,我根据教程写了案列,但是结果是我没有想到的。代码如下
@Data
public class PersonT {
private Optional<CarT> car;
}
@Data
public class CarT {
private String name;
private Optional<InsuranceT> insurance;
}
@Data
public class InsuranceT {
private String name;
}
public static void main(String[] args) {
String name = Optional.of(new PersonT()).flatMap(PersonT::getCar)
.flatMap(CarT::getInsurance)
.map(InsuranceT::getName)
.orElse("Unknown");
System.out.println(name);
}
我发现执行了这段代码后并没有达到我的预想结果,我以为会返回"Unknown",但是给我抛出了空指针异常,我想知道这是什么原因
问题补充........................
其实看了教程写着上边的这种写法可以替换我下边的这种写法
if(personT != null) {
CarT carT = personT.getCar();
if(carT != null) {
InsuranceT insuranceT = carT.getInsurance();
if(insuranceT != null) {
return insuranceT.getName();
} else {
return "Unknown";
}
} else {
return "Unknown";
}
} else {
return "Unknown";
}