关于JAVA中的List接口

毕设小屋 毕业设计 1

有如下说明代码

class A{}
main()
{
List all=ArrayList();
all.add(new A());
all.add(new A());
A[] a1=new A[2];
a1=(A[])all.toArray();
A[] a2=all.toArray(new A[]{});
}

以上代码, a1=(A[])all.toArray();总是报ClassCastException错误, 而toArray()方法返回的是Object[],我已经强转了, A[] a2=all.toArray(new A[]{});却能顺利通过, 请问有人知道为什么吗?

回复

共2条回复 我来回复
  • 毕设驿站
    这个人很懒,什么都没有留下~
    评论

    java不支持对数组进行强转。 A[] a2 = (A[]) all.toArray(new A[] {});之所以可以是因为,toArray构建的是A【】,虽然返回的是object[] 。

    0条评论
  • 毕设向导
    这个人很懒,什么都没有留下~
    评论

    Java不支持数组的逆变,你不能对数组强制类型转换,只能再开一个新的数组,然后每个元素转换后放进去。

    0条评论

发表回复

登录后才能评论