我们在平时编程的时候,遇到的一类Exception 要数 NullPointException, 所以我们很经常为了防止NPE, 会加入防御性的代码,使用验证是否是Null的判断语句,但是这一方面无形中也加大了代码的嵌套,而且这个也不是业务相关性的代码,有时候会加入多层嵌套,导致代码的臃肿,难以维护,影响阅读性,接下来我们就举一个实例来说明一下。
public class OptionalExample {
private static class OptionalTest{
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
public static void main(String[] arg){
OptionalTest optionalTest = new OptionalTest();
System.out.println("The name is : " + optionalTest.getName().toUpperCase());
}
}
运行一下,会抛出NPE,因为optionalTest.getName 拿到的是一个Null值,再调用toUpperCase 时候会抛出NPE,那么接下来我们用Optional来进行一下改造。
int number = Optional.ofNullable(two)
.flatMap(OptionalTestTwo::getCar)
.map(x -> x.getCarNumber())
.orElse(12);
System.out.println(number);
Optional类的引入是为了解决代码中变量值缺失问题,更有效的预防代码中出现的不期而遇的空指针问题,而且能帮助你设计出更好的API,通过阅读方法就知道是否接受一个Optional类型的值。
网友评论