【发布时间】:2014-03-03 15:23:29
【问题描述】:
我有一个这样的接口A:
public interface A{
void myFirstMethod();
void mySecondMethod();
}
然后我就有了这个课程:
public class MyClass{
private List<? extends A> elements;
public MyClass(){
A obj = new A(){
@Override
public void myFirstMethod(){
//SOME CODE
}
@Override
public void mySecondMethod(){
//SOME CODE
}
};
elements.add(obj);
}
}
我以前没有使用过泛型(只有List<String>... 之类的东西)所以我不明白为什么这段代码不能编译。更准确地说,我在elements.add(obj); 行收到一个错误,表明方法 add 不适用于这些参数。
编辑: 我已经更改了代码,现在 elements.add(obj) 可以正常编译,但我还有另一个问题。
public class MyClass{
private List<A> elements;
public MyClass(List<A> elements){
this.elements = elements;
elements.add(obj);
}
}
当我尝试这样做时,它无法编译。
//A1 implements A
List<A1> list = new ArrayList<A1>();
MyClass(list);
我该如何解决这个问题?
【问题讨论】: