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实现小游戏 (剪刀石头布)
- 如何在java中写语句判断2个sql语句是否结果一致。
- Java写的Console程序,运行一段时间以后自动暂停。什么原因呢?
- 求助!关于createTitledBorder里如何加一个控件
- jb2007,jb系列的掘墓人?
- 问core java卷2讲的是哪些内容
- 怎样下载其他网站上的Applet的Class文件?
- 关于使用Java布局管理器在板面绘图的问题
- 关于java网络编程的小程序问题
- 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可能是人家内部人员研究或改动代码时方便查询用的