java - 列表多态性

标签 java list polymorphism

我有这些类(class):

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

但是编译器会抛出错误。如何使用多态性正确地做到这一点?

最佳答案

如果您想要一个接受包含父类(super class)子类的列表的函数,您应该使用语法。

public ListClas(List<? extends Parent> list){
    this.list=list;
}

它将接受两者。

ListClas listClasA = new ListClas(list_childA);

ListClas listClasB = new ListClas(list_childB);

关于java - 列表多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981077/

相关文章:

Java 基准测试

Java调用外部进程-exe

python - 在随机位置分割字符串并将结果部分添加到列表中

涉及运算符重载函数的 C++ 链接器错误

sql - jpa 对子类的连接查询

java - 无法找到或加载主类: Executable JAR from Maven

java - System.exit() 结果无法执行 finally block

python - 如何通过python计算属于字符串列表的每个字符串长度?

polymorphism - 在 OCaml 中, `' 和 .` and ` 类型 a.` 和何时使用它们之间有什么区别?

c++ - 指向同一对象的不同基类型的指针和唯一指针