我目前面临基类和子类的问题。
虽然将单个对象作为参数(方法单一),但编译器不会抱怨。
但是,如果涉及到列表,编译器会强制我将列表声明为<? extends Base>
之后,我不再被允许将基本类型的对象添加到该列表中。
如何在一个列表中同时使用两种类型(基类和子类)?
public class Generics {
class Base { }
class Sub extends Base{ }
interface I {
public void list( List<Sub> list );
public void single( Sub p);
}
class C implements I {
public void list( List<Sub> list) { }
public void single( Sub p) { }
}
void test() {
C c = new C();
c.single( new Sub() );
c.list( new ArrayList<Base>() ); // The method list(List<Generics.Sub>) in the type Generics.C is not applicable for the arguments (ArrayList<Generics.Base>)
}
public static void main( String[] args) {
Generics g = new Generics();
g.test();
}
}