为什么使用?
使用它是为了避免代码中的 if (obj != null) { } 这样范式的代码,可以采用链式编程的风格
介绍
构造函数:
方法列表:
使用:
orElse方法:
将user2的name赋值给user的name
//不使用Optional写法
if (user2.getName()!=null){
user.setName(user2.getName());
}else {
user.setName("默认姓名");
}
//Optional写法
user.setName(Optional.ofNullable(user2.getName()).orElse("默认姓名"));
orElseGet方法:和orElse类似,只不过参数不一样
同样是将user2的name赋值给user的name
//Optional写法,两种写法
//里面写方法
user.setName(Optional.ofNullable(user2.getName()).orElseGet(()->getName()));
private String getName(){
return "默认姓名";
}
//里面直接写函数
user.setName(Optional.ofNullable(user2.getName()).orElseGet(()->{
return "默认姓名";
}));
orElseThrow方法:
同样是将user2的name赋值给user的name
//Optional写法
user.setName(Optional.ofNullable(user2.getName())
.orElseThrow(()->new NullPointerException()));
ifPresent方法:
比如列表经常用到的条件搜索功能
QueryWrapper<PjjhDdqkVo> queryWrapper = new QueryWrapper<>();
//传统写法
if(wbddyPqQueryVo.getBgb141()!=null) {
queryWrapper.eq("bgb141", wbddyPqQueryVo.getBgb141());
}
//Optional写法
Optional.ofNullable(wbddyPqQueryVo.getBgb141()).ifPresent(s->{
queryWrapper.eq("bgb141", wbddyPqQueryVo.getBgb141());
});
注意:Optional.ofNullable是不判断空字符串的,如果wbddyPqQueryVo.getBgb141()是空字符串,ifPresent也能执行