【问题标题】:typecast Object[] into OtherObject[] [duplicate]将 Object[] 类型转换为 OtherObject[] [重复]
【发布时间】:2013-02-03 05:37:53
【问题描述】:

我有课

public class ABC {
    public int i;
    public float f;

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

我创建了一个 ABC 对象的 ArrayList。

    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[];

但是有没有其他方法可以在一个命令中将 Object[] 类型转换为 ABC[] ?像这样的

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

虽然这个命令抛出了这个异常

线程“main”中的异常 java.lang.ClassCastException: [Ljava.lang.Object;不能转换为 [LABC;**

任何帮助

【问题讨论】:

  • 强制转换不改变对象的类,数组的类是Object[]。您可以使用 System.arraycopy 将数组复制到所需的类之一中。

标签: java casting arraylist


【解决方案1】:

List interface 有一个 toArray 方法,它返回泛型类型的数组,所以你可以useArrayList's implementation of that

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

【讨论】:

    【解决方案2】:

    toArray() documentation

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-12
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 2018-03-19
      • 1970-01-01
      相关资源
      最近更新 更多