使用Java8的新特性Optional,再取属性的时候避免NullPointException,代替判空操作
如
return Optional.ofNullable(user).map(User::getName).orElse(null));
代替
if(user!=null){
return user.getName();
}else{
return null;
}
提高代码的可读性
可以追溯一下Optional的map方法的源码
如果当前Optional对象没有值,返回一个empty(),继续追溯empty()源码的话,其实他就是new一个Optional()
其实Optional的源码还是挺好读懂的,关于ofNullable()、orElse()、get()、of()等方法都可以自己去看看,一看便会
踩坑
List<Employee> employees = helloMapper.selectByExample(example);
// 利用JDK8新特性简化判空操作(不可用,这里集合不是null,是长度为0)
return Optional.ofNullable(employees).map(list -> list.get(0)).orElse(null);
这里如果查询数据库没有值的话,会报错,下标越界异常
因为查询数据库没有值的话,返回的集合是空集合,长度为0,而不是一个null
也就是在map方法中
if (!isPresent())
return empty();
并不满足这个,继续执行就会发现集合越界了
这是今天踩的坑,记住查询数据库没有结果,
集合:返回的是空集合,并不是null