Java泛型中的类型不匹配错误 公共类超类型{ T-var; 公共T getVar(){ 收益var; } } 公共类子类型扩展了超类型{ 公共静态void main(字符串参数[]){ List ls1=new ArrayList();//无错误 } }
我试图弄清楚为什么会在(1)处抛出错误。有人能解释一下吗?在Java中,泛型是不变的。这意味着即使Java泛型中的类型不匹配错误 公共类超类型{ T-var; 公共T getVar(){ 收益var; } } 公共类子类型扩展了超类型{ 公共静态void main(字符串参数[]){ List ls1=new ArrayList();//无错误 } },java,generics,Java,Generics,我试图弄清楚为什么会在(1)处抛出错误。有人能解释一下吗?在Java中,泛型是不变的。这意味着即使子类型是超类型,也不意味着列表是列表ls=new ArrayList(); 第二行不是错误,因为通配符?表示任何类型 请注意,使用通配符会限制对此类列表的操作,例如在调用add时 public class SuperType<T> { T var; public T getVar(){ return var; } } public clas
子类型
是超类型
,也不意味着列表
是列表ls=new ArrayList();
第二行不是错误,因为通配符?
表示任何类型
请注意,使用通配符会限制对此类列表的操作,例如在调用add
时
public class SuperType<T> {
T var;
public T getVar(){
return var;
}
}
public class SubType extends SuperType<String>{
public static void main(String args[]){
List<SuperType<?>> ls = new ArrayList<SubType>();//(1) throwing an error
List<?> ls1 = new ArrayList<String>();// no error
}
}
List<? extends SuperType<?>> ls = new ArrayList<SubType>();