Java小細節:List可以add(null)嗎?

weixin_34253539發表於2018-10-15

在寫程式碼的時候,有時候遇到for迴圈,寫到下面的時候有一點猶豫。

List<Data> dataList = ...;
for (Data d : dataList) {
    if (d != null) { // 我需要這個判斷嗎?
        // ...
    }
}

遍歷的時候,是否需要對每個元素判空?換句話說,List是否可以允許add null。
然後我實驗了一下,發現竟然是可以的。(我之前的理解是不可以,add null可能會沒有發生任何事情)

static class Data {
    String mName;
    public Data(String s) {
        this.mName = s;
    }

    @Override
    public String toString() {
        return "Data:" + mName;
    }
}

public static void main(String[] args) {
    List<Data> dataList = new ArrayList<>();
    dataList.add(null);
    dataList.add(new Data("shit"));
    System.out.println(dataList.size()); // 這裡輸出的是2

    for (Data d : dataList) {
        System.out.println(d.mName); // 這裡會空指標異常
    }
}

好了,這樣心中的疑惑就消除了,在遍歷的時候,對每個元素判空是非常必要的。

參考資料
關於為什麼ArrayList允許新增null https://softwareengineering.s...

相關文章