Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java泛型中的类型不匹配错误 公共类超类型{ T-var; 公共T getVar(){ 收益var; } } 公共类子类型扩展了超类型{ 公共静态void main(字符串参数[]){ List ls1=new ArrayList();//无错误 } }_Java_Generics - Fatal编程技术网

Java泛型中的类型不匹配错误 公共类超类型{ T-var; 公共T getVar(){ 收益var; } } 公共类子类型扩展了超类型{ 公共静态void main(字符串参数[]){ List ls1=new ArrayList();//无错误 } }

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

我试图弄清楚为什么会在(1)处抛出错误。有人能解释一下吗?

在Java中,泛型是不变的。这意味着即使
子类型
超类型
,也不意味着
列表
列表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>();