public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
size = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}
看java源码时,ArrayList的构造函数里面为什么会有这样的一句话,c.toArray might (incorrectly) not return Object[] (see 6260652),首先为什么c.toArray()不能返回Object[] ,后面说see 6260652,又怎样才能看到?java源码ArrayList构造函数
elementData = c.toArray();
size = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}
看java源码时,ArrayList的构造函数里面为什么会有这样的一句话,c.toArray might (incorrectly) not return Object[] (see 6260652),首先为什么c.toArray()不能返回Object[] ,后面说see 6260652,又怎样才能看到?java源码ArrayList构造函数
解决方案 »
- java.util.ConcurrentModificationException List问题
- java中split的一个小问题
- 求教 二叉树!
- 请教高手!读TXT文档。
- 关于StringTokenizer 和 split 的问题
- 新手提问~!~~急。。
- 讨论一个关于终止函数finalizer 和 构造函数的问题,没分的!!请各位大虾进来逛逛,留几句~~
- 请大家注意SQL注入----------小心地保护自己的数据库。那么。。
- 救命啊 各位大侠帮忙啊!!!!!!!!!!!!!!!!!!!!!
- where to download JDK
- jFreechart 重写 generateToolTip 方法 ,显示热点信息问题,希望大家帮帮我
- swing awt 界面中文乱码? Linux(fedora ) OS
是他们内部的编号,估计是个bug的编号,找到这个就知道原因了
到官方网站去搜索
LZ研究的很深哦,顶一个
会出现转化失败,然后后面的if是用来补救的,当toArray()转失败了就用copyOf()来转
see后面的应该是bug代码我猜,应该是还没找到原因,所以才用这两层的转化
/**
* The array buffer into which the elements of the ArrayList are stored.
* The capacity of the ArrayList is the length of this array buffer.
*/
private transient Object[] elementData;2、// c.toArray might (incorrectly) not return Object[] (see 6260652)
由于toArray使用了泛型,说的是不正确的情况可能不返回对象数组。至于see 6260652 研究他毫无意义。
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}
c.toArray might (incorrectly) not return Object[] (see 6260652)书上说的是可能不会(或不正确地)返回Object[],没有说不可能!你对英语语法理解不对。if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}
上面这段代码的作用就是当c.toArray()不会或不正确地返回Object[]时,对c.toArray()进行修正,让它返回成Object[]
至于那个see 6260652可能是人家内部人员研究或改动代码时方便查询用的