1

在一个类中,我有如下构造函数:

Class(int x, int y, int[] moves);

在创建这些对象的其他类中,我将移动存储在 ArrayList 中。动作是数字。因此,当此类决定创建新对象时,它必须首先将此 ArrayList 转换为数组。所以我尝试了这样的事情:

new Object(0, 0, (int[])moves.toArray(int[moves.size()]);

但它不起作用。应该如何正确完成?

4

1 回答 1

5

调用toArray()anArrayList的结果永远不是int[]. ArrayList<int>由于泛型的工作方式,您不能在 Java 中使用。充其量它会是一个Integer[],然后你需要转换它。请注意,即使您可以从Integerto转换int也不能将anInteger[]转换为int[]. 有些东西必须循环这些值。

你可以直接这样做:

int[] values = new int[moves.size()];
for (int i = 0; i < values.length; i++) {
    values[i] = moves.get(i);
}

或者可以创建一个Integer[]然后从中转换 - 但为什么要复制两次?

于 2013-01-23T15:33:58.947 回答