public class SuperType {
}




public class TestClass<T extends SuperType > {

    public void doSomething() {
        List<T> list = new ArrayList<T>();
        list.add(new SuperType ()); // ERROR
    }
}


它不会编译,给我


类型List中的add(T)方法不适用于参数(SuperType)


但为什么?

最佳答案

假设你有

public class SuperType {
}

public class SubType extends SuperType {
}


并使用TestClass<SubType>您的代码成为

public class TestClass<SubType> {

    public void doSomething() {
        List<SubType> list = new ArrayList<SubType>();
        list.add(new SuperType ());
    }
}


这必须出错,因为new SuperType()不够具体。它必须至少为SubType

关于java - 为什么我不能将SuperType添加到List <T>中,其中<T扩展SuperType>?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17967521/

10-10 20:02