我有这些课:

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);

10-06 03:24