使用ArrayList toArray()方法转换问题

时间:2013-01-23 15:31:33

标签: java arrays

在一个类中,我有一个构造函数,它看起来像:

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

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

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

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

1 个答案:

答案 0 :(得分:5)

toArray()上调用ArrayList的结果是从不 int[]。由于泛型的工作方式,您不能在Java中使用ArrayList<int>。最好是Integer[],然后你需要转换它。请注意,即使您可以从Integer转换为int也无法Integer[]转换为int[]。有些东西必须遍历这些值。

你可以直接这样做:

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

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