Arrays.asList() とプリミティブ配列
Arrays.asList() を使用してプリミティブ データの配列をリストに変換しようとすると、 ) メソッドを使用すると、不一致が発生する可能性があります。この記事では、この問題を調査し、解決策を示します。
問題の説明
Arrays.asList() メソッドは、配列を表す変数引数を受け入れます。ただし、Integer[] などの参照型とは異なり、int[] などのプリミティブ データ型はサポートされません。その結果、2 番目の例は次のようになります。
int[] ints = new int[] {1,2,3,4,5}; List<Integer> list = Arrays.asList(ints);
は List
Autoboxing
プリミティブ データ型を対応するラッパー データ型に変換するオートボクシングは、プリミティブの配列。したがって、int[] 配列は Integer[] 配列に自動的に変換されません。
解決策
この問題を解決するには、次のようなサードパーティ ライブラリを利用できます。 Guava の com.google.common.primitive.Ints.asList メソッドとして。プリミティブ配列からボックス化された値のリストを作成します。あるいは、手動で Integer[] 配列を作成し、int[] 配列から値を割り当てることもできます。つまり、
int[] ints = new int[] {1,2,3,4,5}; Integer[] integers = new Integer[ints.length]; for (int i = 0; i < ints.length; i++) { integers[i] = ints[i]; } List<Integer> list = Arrays.asList(integers);
以上がArrays.asList() がプリミティブ配列で機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。