在一个类中,我有一个构造函数,看起来像:
Class(int x, int y, int[] moves);
Run Code Online (Sandbox Code Playgroud)
在创建这些对象的其他类中,我将移动存储在ArrayList中.移动是数字.因此,当这个类决定ti创建新对象时,它必须首先将此ArrayList转换为数组.所以我尝试过这样的事情:
new Object(0, 0, (int[])moves.toArray(int[moves.size()]);
Run Code Online (Sandbox Code Playgroud)
但它不起作用.怎么做得恰到好处?
调用的结果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);
}
Run Code Online (Sandbox Code Playgroud)
或者可以创建一个Integer[]然后从那里转换 - 但为什么复制两次?
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |