Java JDK 6は古い非ジェネリックコレクションをサポートしていますか、または実行時に既存のコードを破棄しますか?Java JDK 6は非汎用レガシーコードを許可しますか?
サポートしている場合は、有効にする必要がありますか?例えばので
:
List<Integer> list = new ArrayList<Integer>();
list.add(5);
Alpha a = new Alpha();
a.insert(list);
for (Integer integer : list) {
System.out.println(integer);
}
非ジェネリック(レガシーコード):
public class Alpha {
public void insert(List list) {
list.add(new String("50"));
}
}
これは罰金コンパイルが、実行時に休憩。私はそれがうまく動作し、コンパイラはあなたに警告すると思った。
ジェネリックを使用しないと、コンパイラは警告しません。期間。 – BalusC
Java 6は従来のコードと互換性がありませんか? –
私はそれを言っていませんでした。 Java 6は従来のコードと確実に互換性があります。コンパイル時に間違った生の型を使用しているときに警告することはありません。ジェネリックスを使用しない場合、古いJavaバージョンではまったく同じ問題が発生します。 – BalusC