ClassA[] a = null;
a = (ClassA[])list.toArray();
出现java.lang.ClassCastException错误。
原因:
这种转换方式是不被支持的。 强制转换的直接作用对象是Object类型的,通常只能支持普通的类型对象转化, String[]包括两层转换,数组、String。多重转换由于sun并没有提出这种转换的转换类型先后顺序, 这个会引起分歧,导致转换失败。例如:你是想先把arraylist.toArray()这个对象转化为String,再把它转化为String[]就会出现不同的转换结果,这就是分歧的产生。
例子:
public static void main(String[] args) {
Object[] o = new Object[3];
o[0] = new Long(1);
o[1] = new Long(2);
o[2] = new Long(3);
Long[] a = new Long[3];
a = (Long[])o;
}
同样会报ClassCastException异常
正确使用方法:
1) Long[] l = new Long[<total size>];
list.toArray(l);
2) Long[] l = (Long []) list.toArray(new Long[0]);
3) Long [] a = new Long[<total size>];
Long [] l = (Long []) list.toArray(a);