NullPointerException-----開發中遇到的空指針異常


1.使用CollectionUtils.isEmpty判斷空集合

public class TestIsEmpty {
    static class Person{}
    static class Girl extends Person{}
    
    public static void main(String[] args) {
        List<Integer> first = new ArrayList<>();
        List<Integer> second = null;
        List<Person> boy = new ArrayList<>();
        boy.add(new Girl());
        System.out.println(CollectionUtils.isEmpty(first));//true
        System.out.println(CollectionUtils.isEmpty(first));//true
        System.out.println(CollectionUtils.isEmpty(first));//false

        System.out.println(first==null);//false
        System.out.println(second==null);//true
        System.out.println(boy==null);//false

        System.out.println(first.size()); //size=0
        System.out.println(second.size());// NullPointerException
        System.out.println(boy.size());  //size=1


System.out.println(first.isEmpty()); //true
System.out.println(second.isEmpty()); //NullPointerException
System.out.println(boy.isEmpty()); //false

所以:
isEmpty() 或者(list.size() == 0)用於判斷List內容是否為空,即表里一個元素也沒有
但是使用isEmpty()和size()的前提是,list是一個空集合,而不是null,
所以為了避免異常,建議在使用或賦值list集合之前,做一次空集合創建處理,進行內存空間分配,即: List list2 = new ArrayList()
判斷不為空的情況: list!=null && !list.isEmpty()

} }

二 .容易出現空指針的地方

1.實體類里定義的集合

public class Org {
    private Long id;
    private String title;
    private Long parent;
    private List<User> list;

    public Long getId() {return id;}
    public void setId(Long id) {this.id = id;}
    public String getTitle() {return title;}
    public void setTitle(String title) {this.title = title;}
    public Long getParent() {return parent;}
    public void setParent(Long parent) {this.parent = parent;}
    public List<User> getList() {
        if(list==null){
            list=new ArrayList<>();  //這里最好對這個集合處理一下,防止報空指針
        }
        return list;
    }

    public void setList(List<User> list) {
        this.list = list;
    }
}

2.自己定義的集合接收數據庫查詢的數據

 

如:List<Org> users=userService.getAll();
      如果查詢結果為空,users.size=0.users是一個空集合,但不是空
      使用前最好判斷一下是不是為空

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM