原始判空方式:
if(user != null){
System.out.println(user)
}
JDK8封装了Optional类解决空指针问题
- 创建Optional实例
User u = new User();
Optional<User> opUser = Optional.of(u); //of方法不能传入null,会抛出空指针异常
Optional<User> opUser = Optional.ofNullable(u); // ofNullable允许传入null值
- 获取Optional对象维护的数据
get() : 直接返回维护的数据,如果为null,则会抛出异常
orElse() : 需要传入一个默认数据,如果数据为null,则返回传入的默认值.
orElseGet() : 该方法需要传入一个供给型接口,可在进行一系列操作之后返回想要的默认值.
orELseThrow():如果为null,则会抛出异常,也是需要传入一个供给型接口.
User u = new User();
Optional<User> opUser = Optional.ofNullable(u); // ofNullable允许传入null值
opUser.get(); //拿到数据,但是如果为null,则会抛出异常
opUser.orElse(new User());
opUser.orElseGet(()->{
User u = new User();
u.setName("张三");
return u;
}); //orElseGet参数需要传一个供给型接口
opUser.orElseThrow(()->{
return new Exception("参数user不能为空!")
});//如果数据为null则抛出异常,否则返回数据