我有这些课:
class Parent {
public Parent() {
}
}
class ChildA extends Parent {
public ChildA() {
super();
}
}
class ChildB extends Parent {
public ChildB() {
super();
}
}
public ListClas(List(Parent) list) {
this.list=list;
}
}
我想按以下方式运行
ListClas
构造函数。List<ChildA> list_childA = new ArrayList<ChildA>();
List<ChildB> list_childB = new ArrayList<ChildB>();
ListClas listClasA = new ListClas(list_childA);
ListClas listClasB = new ListClas(list_childB);
但是编译器会引发错误。如何使用多态正确执行此操作?
最佳答案
如果要使用一个接受包含超类的子类的List的函数,则应使用语法。
public ListClas(List<? extends Parent> list){
this.list=list;
}
它将接受他们两个。
ListClas listClasA = new ListClas(list_childA);
ListClas listClasB = new ListClas(list_childB);