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);
}
}
在我看来,调用
guru(List<String>); //no type erasure during compiling...
应该会导致编译失败。
如果我们使用以下方法创建对象,就会发生这种情况:
new Main<Integer>() //or any other type
谁能告诉我这里发生了什么?那是JDK中的错误或实例化没有参数的参数化对象可能会导致此类问题,为什么?
如果我们将 Main 定义更改为:
public class Main {
编译失败,正如预期的那样。