class A{
private List<A>list=new ArrayList<>();
<T extends B>T[]toArray(Class<T>cla){
return list.toArray((T[])new B[list.size()]);
}
}
class B extends A{}
class C extends B{}
执行:C[]cs=new A().<C>toArray(C.class);//此行编译通过,运行时报类型转换错误
ps:toArray方法在eclipse中显示返回类型为C[],但运行时报错却是B[]不能转换为C[]
------解决方案--------------------------------------------------------
我看你的toArray(Class<T>cla)方法体内,
参数Class<T>cla根本就没有用到。
------解决方案--------------------------------------------------------
看代码有点晕,楼主好像把自己搞乱了。
如果是一个A类型的List想要转换成C类型的数组,这样就行了:
- Java code
List<A> list = new ArrayList<A>();list.add(new A());list.add(new A()); C[] c = (C[])list.toArray(new C[list.size()]);
------解决方案--------------------------------------------------------