慕慕森
泛型就是一种语法糖,只在你写代码的时候方便编辑器纠错。举个例子,List<Integer> list = new ArrayList<>();
//list.add("String"); //ERRORlist.add(10);
System.out.println(list.get(0));上边被注释掉的就是错误的示例,编辑器会提醒你纠正错误。在经过java编译器编译成字节码后会自动去除掉泛型,同时在get方法前会强制转换为原先的类型。如何证明以上说法?public class Test{
public void change(List<Integer> list){}
public void change(List<String> list){}
}上边这个代码就会被编译器报错,原因是List参数经过编译后类型都会被擦除,所以这两个方法的特征签名一模一样。