首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Collection.toArray()怎么返回?extends T数组

2012-09-09 
Collection.toArray()如何返回?extends T数组class A{private ListAlistnew ArrayList()T extends

Collection.toArray()如何返回?extends T数组
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()]);
[解决办法]
探讨

引用:

Java code

<T extends A> T[] toArray(Class<? extends A> cla) {
T[] ret = (T[])Array.newInstance(cla, list.size());
return (T[])list.toArray(ret);
}

补充一句,最后的(T[])貌似没意义吧

热点排行