据我了解,编译后的泛型在编译后的代码中被替换为没有泛型的构造。
因此,例如,参数化方法
public <T> T f(){
T t = null;
return t;
}
变成
public Object f(){
Object t = null;
return t;
}
,编码
public <T extends MyClass> T f(){
T t = null;
return t;
}
变成
public MyClass f(){
MyClass t = null;
return t;
}
会变成什么
public <T super MyClass> T f(){
T t = null;
return t;
}
?
<T super MyClass>将变成编译器错误。与通配符不同,泛型不能有下界。