int 型のジェネリック LinkedList を定義しようとしていますが、コンパイル エラーが発生します。
List<int> I = new LinkedList<int>();
int 型のジェネリック LinkedList を定義しようとしていますが、コンパイル エラーが発生します。
List<int> I = new LinkedList<int>();
これを行うには、ラッパー クラスを使用する必要があります。
List<Integer> I = new LinkedList<Integer>();
このリンク リストにを挿入できます。これは、オートボックス化により、このリンク リストからオブジェクトint
が自動的に作成され、LinkedList に追加されるためです。Integer
int
プリミティブ型をジェネリック型として使用することはできません。あなたが本当にそれをしたいのであれば、それがラッパークラス(Integer
、Float
、など)の目的です。次のように実行できます。
List<Integer> I = new LinkedList<Integer>();
int
自動ボクシングのため、リストに s を追加することはできます。int
が必要な状況でを使用しようとすると、で自動的にInteger
新しいInteger
が作成されInteger.valueOf
、代わりに使用されます。
また、Java 7 では、ダイヤモンド演算子を使用して、これを使用できます。
List<Integer> I = new LinkedList<>();
入力が速くなることを除いて、これには利点はありません。
これが、プリミティブを型引数として使用できないため、Java にプリミティブ ラッパー クラスがある理由の 1 つです。あなたの場合、必要なものInteger
:
List<Integer> I = new LinkedList<Integer>();
Java 7 以降では、型パラメーターを繰り返す必要はありません。
List<Integer> I = new LinkedList<>();
参照:ジェネリック