在一个类中,我有一个构造函数,它看起来像:
Class(int x, int y, int[] moves);
在创建这些对象的其他类中,我将移动存储在 ArrayList 中。移动是数字。因此,当此类决定创建新对象时,它必须首先将此 ArrayList 转换为数组。所以我尝试了这样的事情:
new Object(0, 0, (int[])moves.toArray(int[moves.size()]);
但它不起作用。应该如何正确完成?
最佳答案
调用toArray()
的结果在 ArrayList
上从不 int[]
.你不能有 ArrayList<int>
由于泛型的工作方式,在 Java 中。充其量是一个 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[]
然后从中转换 - 但为什么要复制两次?
关于java - ArrayList toArray() 方法的转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14483243/