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()た結果が になることは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[]ますが、コピーを 2 回行うのはなぜですか?

于 2013-01-23T15:33:58.947 に答える