类型擦除是删除通用信息以便在编译类上向后兼容的过程。 然后,我不知道泛型类中的对象是什么类型的类,但是在继承的类中,例如:
package generics.testing;
class Box<T> {
private T value;
public Box() {
System.out.println("GenericSuperClass: " + getClass().getGenericSuperclass());
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}
class IntegerBox extends Box<Integer> {}
public class GenericsTesting {
public static void main(String[] args) {
Box<String> box = new Box<>();
IntegerBox ibox = new IntegerBox();
}
}
我明白了:
GenericSuperClass: class java.lang.Object
GenericSuperClass: generics.testing.Box<java.lang.Integer>
我的问题是,为什么保留这些信息generics.testing.Box<java.lang.Integer>
以及存储在哪里?