正常にコンパイルされ、実行されます。
List a=new ArrayList<String>();
a.add(new Integer(5));
誰でもこれを説明できますか?
正常にコンパイルされ、実行されます。
List a=new ArrayList<String>();
a.add(new Integer(5));
誰でもこれを説明できますか?
これは、古いレガシ コードでは、(プリミティブを除く) あらゆるものをコレクションに入れることが許可されていたためです。また、レガシー コードをサポートするために、Java 5 および Java 6 では、新しいタイプ セーフ コードで古いコードを利用できるようになっています。
そのため、Java 5 または Java 6 コンパイラーは、型安全でない引数を取り、誰が何を実行するかを知っている古いクラスのメソッドをコードが呼び出す場合でも、新しい型安全なコードをコンパイルさせなければなりません。
実際、コンパイラは警告を出します。コンパイラは、コンパイルから完全に有効なクラス ファイルを生成しましたが、親切にも、非常に多くの言葉で、「この古いコードが原因で、自分が何をしているのか知っていることを願っています」と言ってくれました。. _ <String>
_ArrayList<String>
やったほうがいい
List<String> a = new ArrayList<String>();
a.add(new Integer(5));
String
List は、オブジェクトのみがコレクションに追加されているかどうかをコンパイラがチェックすることを意味します。誰でもこれを説明できますか?
これが可能な理由は
List a
は、どのオブジェクトがリストに追加されているかをコンパイル時にチェックしないことを意味します。List<String> a = new ArrayList<String>()
Java 7 の時点では、タイプ セーフのために記述する必要はありません。単にダイヤモンド演算子を使用して、同じことを達成することができますList<String> a = new ArrayList();
実際の定義でジェネリック型を指定していません
あなたが書いた場合
List<String> a = new ArrayList<String>();
a.add(new Integer(5));
コンパイルされません。