2016-08-29 9 views
1

Javaプログラマーが知っているように、int(または他のプリミティブ値)をコレクションに入れることはできません。コレクションはオブジェクト参照のみを保持できるため、プリミティブ値を適切なラッパークラス(intの場合はInteger)にボックス化する必要があります。コレクションからオブジェクトを取り出すと、入力したIntegerが取得されます。 intが必要な場合は、intValueメソッドを使用してIntegerをアンボックスする必要があります。このボクシングとアンボクシングのすべては苦痛であり、あなたのコードを混乱させる。 autoboxingとunboxing機能はプロセスを自動化し、苦痛と混乱を排除します。Javaのオートボケに代わるものは何ですか?

プリミティブ型を非プリミティブ型アナログに変換する他の方法はありますか?

+0

周りに到着するJavaの10のジェネリック型引数として使用されるプリミティブ型を可能にする計画だということです対応するラッパークラスとviceversa? – nbro

+1

直接回答ではありませんが、コレクションオブジェクトの代わりにプリミティブ配列を使用しています(あなたのコレクションはその型だけです)。 –

+1

「intValue」を書く必要はありません。コンパイラは**自動**ボクシングを行います。 – PeterMmm

答えて

0

なぜ、オートボクシング機能とボックス解除機能から外したいのかよく分かりません。しかし、これはそれらを使わずに見える方法です。

int number = 5; 
    Integer num = new Integer(number); 
1

全くintValue()の必要がありません:

 List<Integer> list = new ArrayList(); 
     list.add(3); 
     list.add(new Integer(70)); 
     int x = list.get(0) + 600; 
     if (x > 800) { 
      x = new Integer(80); 
     } 

(しかし、いくつかのpitfalls ...がある可能)

0

私はあなたが実際に代わりのプリミティブデータ型を保持しているList代替を探していると思いますintValueの呼び出しを避けることができることを知っています(あなたの質問のテキストの最後にこれが既に分かっているようです)。

Javaクラスライブラリには、プリミティブデータ型を直接格納する実装はありませんが、第三者のライブラリが本質的にこれをサポートしています(例:Apache Commons' ArrayIntList)。

良いニュースは、あなたが彼らにプリミティブを変換する別の方法が必要になるのはなぜしかしJavaの10いつか2018年

関連する問題