老师,您好!在"7-12 泛型(下)“的"01:28"处,老师说"为了兼容性,在运行时将所有的泛型内容Erase”,但是在下面的例子中,却可以在运行时候,能够得到泛型的信息,希望老师您解释一下;谢谢老师!
public class Main {
public static void main(String[] args) {
//得到带父类泛型信息的Type对象:
Type type=B.class.getGenericSuperclass();
if(type instanceof ParameterizedType){
ParameterizedType parameterizedType=(ParameterizedType)type;
Type[] types=parameterizedType.getActualTypeArguments();
for(Type ty:types){
Class<?> cl=(Class<?>)ty;
System.out.println(cl.getName());
}
}
}
}
class A<K,V>{
public A(){ }
private K testK;
private V testV;
}
class B extends A<String,Integer>{
public B(){ }
}
上面程序运行的结果是:
java.lang.String
java.lang.Integer