Java での配列からリストへ: 動作の進化
Java では、配列からリストへの変換は一般的なタスクです。ただし、Arrays.asList() メソッドの動作は、Java SE 1.4.2 以降、大幅に変更されました。
Java 1.5 より前の動作
Java 1.5 より前では、 Arrays.asList() は、配列の実際の要素を含むリストを返しました。例:
int[] numbers = { 1, 2, 3 }; List<Integer> list1 = Arrays.asList(numbers);
この場合、list1 には要素 1、2、および 3 が含まれます。
Java 1.5 以降の動作
Java 1.5 以降、Arrays.asList() の動作が変更されました。元の配列への参照を含む固定サイズのリストを返すようになりました。結果:
int[] numbers = { 1, 2, 3 }; List<Integer> list2 = Arrays.asList(numbers);
この場合、list2 には 1 つの要素 (配列番号自体) が含まれます。
変更の理由
動作の変更は、タイプ セーフティを強制するために行われました。リストには int などのプリミティブ型を含めることができないため、返されるリストは List
既存のコードへの影響
Java 1.5 に依存する前に作成されたコードArrays.asList() の古い動作を変更する必要がある場合があります。たとえば、次のアサーションは Java 1.5 以降では失敗します。
Assert.assertTrue(Arrays.asList(numbers).indexOf(4) == -1);
配列をプリミティブ型のリストに変換する
プリミティブ型の配列を次のように変換するには対応するラッパー クラスのリストには、次のように使用できます。テクニック:
Integer[] numbers = new Integer[] { 1, 2, 3 }; List<Integer> list = Arrays.asList(numbers);
これにより、配列の値を含む Integer オブジェクトのリストが作成されます。
以上がバージョン 1.4.2 以降、Java の `Arrays.asList()` の動作はどう変わりましたか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。