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

Arrays.asList() が Java のプリミティブ配列で誤動作するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-20 01:13:08780ブラウズ

Why Does Arrays.asList() Misbehave with Primitive Arrays in Java?

Arrays.asList() がプリミティブで扱いにくい理由

Java の Arrays.asList() メソッドを使用すると、配列を配列に変換できます。リスト。ただし、プリミティブ配列では予期しない動作をする可能性があります。

質問: Arrays.asList(int[]) が List を返すのはなぜですか。 List の代わりに?

答え: Java ジェネリックスはプリミティブ型をサポートしません。代わりに、ラッパー クラス (Integer、Float など) を使用します。 Arrays.asList() は、渡された配列とまったく同じ型のリストを返します。 int[] は int の配列であるため、結果は List になります。

質問: int[] を List

答え: いいえ、変換する直接の方法はありません。 int[] を List に変換します。 using Arrays.asList().

質問: この場合、オートボクシングが機能しないのはなぜですか?

回答: オートボクシングは個別にのみ発生しますプリミティブの配列ではなく、プリミティブ値。したがって、int[] int を Integer[] に自動的に変換することはできません。

解決策:

List を取得するにはプリミティブの配列から、Guava の com.google.common.primitive.Ints.asList() メソッドなどの追加機能を提供するサードパーティ ライブラリを使用できます。このメソッドは、int[] 配列の周囲に List ラッパーを明示的に作成します。各要素は Integer としてボックス化されます。

あるいは、Integer[] 配列から自由に開始できる場合は、Arrays.asList を使用できます。 List を返すのと同じように () を直接実行します。

以上がArrays.asList() が Java のプリミティブ配列で誤動作するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。