3

Java 内でプリミティブ配列を保持するジェネリックを使用してコレクションを実装すると、配列内に実際に格納されるものは何ですか? ジェネリックを使用してコレクションを定義するということは、オブジェクトのみを格納できることを意味し、そうする場合は をArrayList<Integer>追加できますintが、これは に自動ボックス化されIntegerます。

ArrayList<int[]>配列はオブジェクトであるため、完全に合法であると定義するとします。私が実際にコレクションに格納されているのはInteger[]、コンパイラがいくつかの変換を実行し、オートボクシングを使用して配列に追加するためなのか、それとも格納できint[]、コレクションがプリミティブ配列を配列自体と同じように格納するのかはわかりませんオブジェクト。

4

2 に答える 2

2

ArrayList<int[]>プリミティブの配列を格納します。関連するオートボクシングはありません。

Java では、プリミティブであろうとなかろうと、どのような型の配列もオブジェクトであるため、ジェネリックと互換性があります。

int[]昨日の楽しい質問で示されているように、うっかり のコンテナになってしまう可能性さえあります: Java containsAll does not return true when given lists

于 2013-03-28T10:07:55.037 に答える
0

int[] は Integer[] にボックス化されることはありません。配列は常に参照型であるため、ボックス化は必要ありません。
Javaは、プリミティブ配列またはオブジェクト配列のいずれかであるオブジェクトとして、常に配列に取り組みます。ここでは、プリミティブとオブジェクトの配列
について少し詳しく説明します。詳細については、プリミティブ値オブジェクトの配列を参照してください。また、この質問を見ることをお勧めしますJava: プリミティブデータ型の配列は自動ボックス化されません

于 2013-03-28T10:10:46.470 に答える