这是我的类结构,以及我遇到的错误。
class SuperClass{
//variables
}
class SubClass1 extends SuperClass{
//variables
}
class SubClass2 extends SuperClass{
//variables
}
class AClass{
List<SuperClass> list;
public AClass(boolean b){
if(b)
list = new ArrayList<SubClass1>();//getting error here
else
list = new ArrayList<SubClass2>();//and here
}
void addObjects(SuperClass obj){
list.add(obj);
}
}
我该如何解决这个问题?我需要改变我的设计吗?怎么改?
补充:
当我改变了
`List<SuperClass> list;`
将List<? extends SuperClass> list;
翻译为:列表List<? extends SuperClass> list;
我没有得到之前的错误,但是在添加对象时出现了另一个错误:
List<capture#2-of ? extends SuperClass>
中的方法add(capture#2-of ? extends SuperClass)
不适用于参数(SuperClass)。
list = new ArrayList();
但是,当我尝试添加对象时,list.add(subClass1Object);
我遇到了以下错误:类型List<capture#2-of ? extends SuperClass>中的方法add(capture#2-of ? extends SuperClass)对于参数(SubClass1)不适用。 - Eternal Noob