8
私はOJCPAのコードスニペットを見ていて、コンパイラが次のコードでエラーをスローしない理由を混乱させています。ジェネリック型をジェネリック型に割り当てるときにコンパイラエラーが発生するのはなぜですか?
List l = new ArrayList();
l.add("a");
l.add("b");
l.add(1);
List<String> strList = new ArrayList<>();
strList = l; //#1 - Why does the assignment compile?
for(String s: strList) {
System.out.println(s); //#2 - It makes sense that it then throws a ClassCastException
}
私は、コンパイラは、生の型としてリストLを参照してくださいだろうし、ジェネリック医薬品は不変であるので、それは> List型の<文字列ではないとして、それは、コンパイラエラーを生成することを考えました。
ありがとうございました。
詳細情報https://docs.oracle.com/javase/tutorial/java/generics/rawTypes.html – AdamSkywalker
コーデックが知っていたキャストやその他の構文の表示が必要な場合があります/彼女はやっていた。しかし、私はその時代に取り組んでいたさまざまな競合する設計基準を認識していないので、彼らにはそれが良い理由があると信じていなければなりません。 :-) –
タイプされたクラスに生の型を割り当てることができますか? – binarycreations