は私がJavaでジェネリックを使用しますが、私はこのすべてをコンパイルし、作品ジェネリックタイプの標準リストより安全ですか?
public static void add(List l, Object o) {
l.add(o);
}
public static void main(String[] args) throws Exception {
List<Integer> list = new ArrayList<Integer>();
add(list, "1.23");
add(list, 1.23);
System.out.println(list);
}
を考えたとして、それはとても良いではありません。 list
から値を取得すると、例外がスローされます。
Java 6ではより安全ですか?
なぜあなたはしないでください:あなたは
add()
メソッドのシグネチャを変更することができれば、あなたのmain()
方法でコードのコンパイルエラーを取得するようしかし、あなたは単純に型チェックを強制することができます'list.add()'メソッドを使用しますか? 'List'パラメータで 'add()'メソッドを宣言してください。 –
NINCOMPOOP
私は理解していますが、タイプ消去(古いコード)に直面しています –
@ KalamarObliwy:しかし、コンパイル時のエラーからあなたを救うので、実行時に 'ClassCastExceptions'から保存されます。 – NINCOMPOOP