我有一个重新升级 java 泛型的问题。据我所知,通用信息仅在编译时可用,通过一个称为“类型擦除”的过程,一旦编译代码并生成 .class 文件,所有类型信息都会消失
也就是说,一旦 .java 文件被编译,List myList = new arrayList() 就是 .class 文件字节码所具有的,即使该列表在 .java 文件中被声明为字符串列表。
话虽如此,请考虑以下情况。
我有一个带有签名方法的罐子
public void check(List<String> p)
当我从另一个代码调用这个方法时,编译器强制检查方法的参数应该是List<String>
only,没有别的。
现在由于检查方法存在于 jar(.class 文件)中,编译器如何知道所需的 TYPE 信息List<String>
,如果在制作 .class 文件时已经删除了 TYPE 信息?