2
import java.util.*;
public class Main <T> {
public void guru(List<Integer> list) {
System.out.println("INteger");
}
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
new Main().guru(list);
}
}
在我看來,調用奇怪的JDK行爲是否應該編譯?
guru(List<String>); //no type erasure during compiling...
應引起編譯失敗。
那會發生什麼,如果我們創建對象:
new Main<Integer>() //or any other type
誰能告訴我這是怎麼回事?這是JDK中的錯誤,或者實例化沒有參數的參數化對象可能導致這樣的問題,爲什麼?
我可以補充一點,如果我們改變主要定義:
public class Main {
編譯失敗,符合市場預期。
非常感謝,我認爲原始版本意味着只有實際參數被忽略(在本例中爲)。這解釋了一切。 –
user2266059
2013-04-10 12:57:51