ホームページ > Java > &#&チュートリアル > Arrays.asList() がプリミティブ配列で機能しないのはなぜですか?

Arrays.asList() がプリミティブ配列で機能しないのはなぜですか?

DDD
リリース: 2025-01-03 07:06:39
オリジナル
703 人が閲覧しました

Why Doesn't Arrays.asList() Work with Primitive Arrays?

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 ではなく、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート