使用Java8的新特性Optional,再取屬性的時候避免NullPointException,代替判空操作
如
代替
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