ArrayList中的toArray(T [])方法

时间:2014-10-02 13:17:12

标签: java arraylist

当我进行ArrayList实现时,我在toArray(T [])方法中找到了一段奇怪的代码。

 public <T> T[] toArray(T[] a) {
        if (a.length < size)
            // Make a new array of a's runtime type, but my contents:
            return (T[]) Arrays.copyOf(elementData, size, a.getClass());
        System.arraycopy(elementData, 0, a, 0, size);
        if (a.length > size)
            a[size] = null;
        return a;
    }

部分是,

 if (a.length > size)
    a[size] = null;

为什么只有数组中此索引处的元素设置为null?一旦数组填充了列表的内容,其余索引处的元素应该设置为null,对吧?或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:13)

javadoc解释了原因:

  

如果列表适合指定数组且有空余空间(即,数组的元素多于列表),则紧跟在列表末尾的数组中的元素将设置为null(仅当调用者知道列表中不包含任何null元素时,这在确定列表长度时非常有用。)