java 泛型类型转换_java‘形式泛型类型‘强制转换

问题是这样的,在书上说,不能使用泛型类型创建实例,如表达式newE[]或newE[10]就是错误的,所以一般(E[])newObject[capacity]这样解决,但我发现这样不能总是成功的,有些程序会出现...

问题是这样的,在书上说,不能使用泛型类型创建实例,如表达式new E[]或new E[10]就是错误的,所以一般(E[])new Object[capacity]这样解决,

但我发现这样不能总是成功的,有些程序会出现java.lang.ClassCastException异常,

这是我写的程序:

public static > void mergeSort(E[] list){

if(list.length>1){

//Merge sort the first half

E[] firstHalf=(E[])new Object[list.length/2]; //这里为什么会有错,ClassCastException,??

System.arraycopy(list,0,firstHalf,0,list.length/2);

mergeSort(firstHalf);

//Merge sort the second half

int secondHalfLength=list.length-list.length/2;

E[] secondHalf=(E[])new Object[secondHalfLength];

System.arraycopy(list,list.length/2,secondHalf,0,secondHalfLength);

mergeSort(secondHalf);

//Merge firstHalf with secondHalf

E[] temp=merge(firstHalf,secondHalf);

System.arraycopy(temp,0,list,0,temp.length);

}

}

E[] firstHalf=(E[])new Object[list.length/2];

E[] secondHalf=(E[])new Object[secondHalfLength];

这两句,有警告,但我认为不应该出错呀?下面测试排序算法的程序

String[] str={"zhu","bin","hua","wan","yu"}; //这里会出现ClassCastException异常,为什么??

MergeSort.mergeSort(str);

for(Object element:str)

System.out.print(element+" ");

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值