用
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/