ArrayList.toArray() 遇到java.lang.ClassCastException错误

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);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值