我对 java 还很陌生,没有太多使用接口,这是我想象的一个非常基本的问题。
我定义了一个接口,一个扩展它的第二个接口,然后是一个实现第二个接口的类:
public interface I1 {
public void doStuff();
}
public interface I2 extends I1 {
public void doMoreStuff();
}
public class C2 implements I2 {
public void doStuff(){
// implements I1 as required
}
public void doMoreStuff(){
// implements I1 as required
}
}
然后我想调用一个方法,该方法具有一个实现接口 I1 的对象集合作为参数:
public class C3 {
public static void doI1Stuff(List<I1> implementorsOfI1){
// code here
}
}
但是当我尝试类似的东西时出现上述错误
C2 aC2 = new C2();
List c2L = new List<I2>();
c2L.add(aC2);
C3.doI1Stuff(c2L);
作为一个java新手,我所做的对我来说似乎是合理的。为什么它不起作用,更有经验的程序员会怎么做?我希望我在某个地方犯了一个非常简单的错误,这实际上是可能的......
(修改后的问题:如果我正在处理单个 C2 对象,但不是它们的集合,它可以工作(如回复所述)......)