读书人

ArrayList的toArray()有关问题

发布时间: 2011-12-31 23:50:30 作者: rapoo

ArrayList的toArray()问题
我在ArrayList中存放了一些字符串:
List arr = new ArrayList();
arr.add( "str1 ");
arr.add( "str2 ");
arr.add( "str3 ");
...
然后我想把它转成字符串数组,我这样做的:
String[] str = (String[])arr.toArray();
这一行抛出了一个类型转换的运行时异常:ClassCastException
请问,为什莫会这样?

[解决办法]
从Object[]到String[]的转换是不行的。
List list = new ArrayList();
list.add( "aaa ");
list.add( "bbb ");
list.add( "ccc ");
Object[] objs = list.toArray();
String[] str = new String[objs.length];
System.arraycopy(objs, 0, str, 0, objs.length);
[解决办法]
在java中,当数组创建后,数组的类型就被固定了,ArrayList.toArray()返回值总是被作为一个Object[]来使用,尽管String[]是Object[]的一个扩展,所以不能简单的通过
(String[])ArrayList.toArray()来将Object[]数组转换成String[].

所以你要这样转换:
ArrayList arr = new ArrayList();
arr.add( "str1 ");
arr.add( "str2 ");
arr.add( "str3 ");

String[] str = (String[])arr.toArray(new String[arr.size()]);

读书人网 >J2SE开发

热点推荐