ホームページ > Java > &#&チュートリアル > Java では「Arrays.asList()」がプリミティブ配列をオートボックス化しないのはなぜですか?

Java では「Arrays.asList()」がプリミティブ配列をオートボックス化しないのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-28 16:06:11
オリジナル
433 人が閲覧しました

Why Doesn't `Arrays.asList()` Autobox Primitive Arrays in Java?

Arrays.asList() の難題: 制限を理解する

Java では、Arrays.asList メソッドは配列を変換する便利な方法を提供します。リストに追加します。ただし、float[] などのプリミティブ配列を扱う場合、異常が発生します。

このコード スニペットは期待どおりに機能し、Integer オブジェクトのリストを作成します。

List<Integer> list = Arrays.asList(1,2,3,4,5);
ログイン後にコピー

一方、次のコードは List の作成に失敗します:

int[] ints = new int[] {1,2,3,4,5};
List<Integer> list = Arrays.asList(ints);
ログイン後にコピー

代わりに、出力は List で、Arrays.asList とプリミティブ配列の動作の不一致が強調表示されます。

  • なぜこれが起こるのですか?

Arrays.asList は、構文上の省略表現である varargs パラメータを受け入れます。配列。ただし、プリミティブの場合は、各プリミティブ値ではなく、配列全体を単一の要素として扱います。これにより、オブジェクトとしてラップされた個々のプリミティブ値ではなく、プリミティブの配列を含むリストが作成されます。

  • これは修正できますか?

残念ながら、 int[] を List に変換する簡単な方法はありません。 Arrays.asList を使用します。これを実現するには、外部ライブラリまたはカスタム コードに頼る必要があります。

  • なぜここでオートボクシングが機能しないのですか?

オートボクシングは通常、プリミティブを変換します。オブジェクト コレクションで使用するために、対応するラッパー オブジェクトに変換します。ただし、プリミティブの配列に適用すると、要素ごとに発生しません。この制限は、配列のオートボックス化が Java でサポートされていないという事実に起因しています。

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

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