/**
* Appends the specified element to the end of this list.
*
* @param e element to be appended to this list
* @return <tt>true</tt> (as specified by {@link Collection#add})
*/
public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
执行add方法时,会先将此容器的大小增加。。即size++,然后将传进的元素赋值给新增的elementData[size++],即新的内存空间
但是此时如果在size++后直接来取这个List,而没有让add完成赋值操作,则会导致此List的长度加一,,但是最后一个元素是空(null),所以在获取它进行计算的时候报了空指针异常。
在多线程的情况下,这种情况难以被发现,可能要等一个程序运行几个小时以后才会抛出java.lang.NullPointerException(空指针异常)。
版权声明:本文为weixin_38329804原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。