我认为 java 擦除会在编译时擦除泛型类型,但是当我自己测试它时,我意识到字节码中有一些关于泛型类型的信息。
这是我的测试:
我写了 2 节课:
import java.util.*;
public class Test {
List integerList;
}
和
import java.util.*;
public class Test {
List<Integer> integerList;
}
我编译了两个类和通用类的某个地方我看到了这一行
integerList{blah blah}Ljava/util/List;{blah blah}
Signature{blah blah}%Ljava/util/List<Ljava/lang/Integer;>;{blah blah}<init>
在非泛型类中:
integerList{blah blah}Ljava/util/List;{blah blah}<init>
所以很明显我在字节码中有通用信息那么这个擦除是什么?