記錄一下昨天看到項目之前同僚判斷一個list的時候隻判斷了llist!=null,是以而出現了問題
1.list==null,意味着list壓根沒有位址,在堆内就不存在,說明沒有進行初始化。這時list調用任何的方法都會抛出空異常
2.list.size( )= 0,意思是堆内有list,但是還沒有放元素,其長度随着元素數量變化而變化,暫時為零。list.size( )==0說明list已經被new過,但是裡面沒有值。
是以隻判斷list!=null的話,那就是說有這個list集合但是還沒有資料,是以size==0,這樣去擷取list.get(0)的時候就會沒有對象,是以報
index(0),size(0)這個錯誤:
if(voList!=null){
if(voList.size()>1) {
for (ManagerVO mvo : voList) {
auditpeoplelist.append(mvo.getId());
auditpeoplelist.append(",");
} auditProcessItem.setAuditpeoplelist(auditpeoplelist.substring(0,auditpeoplelist.length()-1));
}else{
//這裡如果volist.size==0的話就會拿不到對象,會報index(0),size(0)的錯誤
auditpeoplelist.append(voList.get(0).getId());
auditProcessItem.setAuditpeoplelist(auditpeoplelist.toString());
}
}else{
auditProcessItem.setAuditpeoplelist(auditProcessVO.getId().toString())
}
反推一下,如果隻判斷list.size>0時,list萬一為null呢?你集合都沒有,自然是會報空指針異常:
if(voList.size>0){
if(voList.size()>1) {
for (ManagerVO mvo : voList) {
auditpeoplelist.append(mvo.getId());
auditpeoplelist.append(",");
} auditProcessItem.setAuditpeoplelist(auditpeoplelist.substring(0,auditpeoplelist.length()-1));
}else{
//如果voList==null的話,那麼這裡會報空指針異常
auditpeoplelist.append(voList.get(0).getId());
auditProcessItem.setAuditpeoplelist(auditpeoplelist.toString());
}
}else{
auditProcessItem.setAuditpeoplelist(auditProcessVO.getId().toString())
}
總結就是:
1、如果直接判斷size>0,如果list == null,那程式報空指針的錯
2、如果隻判斷list == null,那list内的資料還是可能為空
是以我們給list做非空判斷時要滿足list!=null&&list.size>0這兩個條件
最後的最後:寫文章不容易啊,親若是喜歡或者對你有幫助記得點贊+關注或者收藏呦~就醬,啾咪~