黑马程序员技术交流社区
标题:
转换为数组toArray的时候为什么老出错?
[打印本页]
作者:
耿晓波
时间:
2013-4-15 11:02
标题:
转换为数组toArray的时候为什么老出错?
ArrayList <Integer> list = new ArrayList <Integer>();
for(int i = 0 ; i < 5; i ++)
{
list.add(i);
}
Integer[] a = list.toArray();//这里为什么出错呢,已经用泛型了?
作者:
殇_心。
时间:
2013-4-15 11:28
list.toArray(); 这里返回的对象是object,所以会编译通不过。
正确代码如下:
Integer []a = new Integer[list.size()];
list.toArray(a);
作者:
刘永建
时间:
2013-4-15 11:35
你可以试着用下面的两种方法解决
1、
Object[] o = list.toArray();
2、
Integer[] a = list.toArray(new Integer[0]);
就算用的是泛型,toArray的返回类型也是Object类型,而强制类型转换是不允许数组强制的,所以有了带参数的toArray方法
而带参数的toArray(T[] a) 方法,则是根据参数数组的类型,构造了一个对应类型的,长度跟ArrayList的size一致的空数组,虽然方法本身还是以 Object 数组的形式返回结果,不过由于构造数组使用的ComponentType跟需要转型的ComponentType一致,就不会产生转型异常;你可以试着这样写:
public static void main(String[] args)
{
ArrayList <Integer> list = new ArrayList <Integer>();
for(int i = 0 ; i < 5; i ++)
{
list.add(i);
}
Object[] o = list.toArray();
Integer[] a = list.toArray(new Integer[0]);
System.out.println(Arrays.toString(o));
for(int i : a)
{
System.out.println(i);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2