如何理解 Java 泛型擦除?
最近在学习泛型,一直不理解泛型擦除是怎么回事,也查阅很多博客但还是不理解,都没说清楚泛型擦除是怎么进行的,是怎么擦除的,都是说泛型擦除是在编译后,然后将泛型信息擦除,将泛型编译为参数类型对应的类型:
有Test.java文件,文件内容为
public static void main(String[] args){
List<String> list=new ArrayList();①
}
问题1:泛型擦除是在编译后,编译后就是把全部.java文件编译成.class文件,擦除是擦除的是执行①后的实际对象中的吗?这似乎也说不通,因为new ArrayList() 的时候并没有限定类型,只是在声明的时候限定了类型
问题2:因为查阅资料都说的是编译后进行泛型擦除,就是说这个不可能是在new一个对象的时候进行泛型擦除,因为编译时还不能确定new 的具体是哪个对象,
那么泛型擦除到底是哪个阶段进行的?泛型擦除的具体wei'z是在哪?