关于java:typecast Object [] into OtherObject []

typecast Object[] into OtherObject[]

本问题已经有最佳答案,请猛点这里访问。

我有一节课

1
2
3
4
5
6
7
8
9
public class ABC {
    public int i;
    public float f;

    public ABC(int d1,float d2) {
        i=d1;
        f=d2;
    }
}

我已经创建了ABC对象的数组列表。

1
2
3
4
5
    ArrayList<ABC> list = new ArrayList<ABC>();
    ABC abc1=new ABC(1,1.0f);
    ABC abc2=new ABC(2,2.0f);
    list.add(abc1);
    list.add(abc2);

现在我想用toArray()方法将arraylist转换成数组,但是这个方法返回Object[];

现在我可以将Object[]的元素逐个类型化为abc类型的对象,并创建ABC[];

但是,有没有其他方法可以在一个命令中将对象[]类型转换为abc[]?像这样的东西

1
    ABC[] array=(ABC[])list.toArray();

尽管此命令引发此异常

Exception in thread"main" java.lang.ClassCastException: [Ljava.lang.Object; can not be cast to [LABC;**

任何帮助


List接口有一个返回一般类型数组的toArray方法,因此可以使用usearraylist's implementation of that

1
2
ABC[] array = new ABC [list.size()]
array = list.toArray(array);

toarray()文档

1
ABC[] array = list.toArray(new ABC[list.size()])