如何使用List <child>调用方法,但方法的参数是List <parent>?</parent> </child>

时间:2014-01-31 10:36:43

标签: java inheritance parent extends

我遇到了一些问题,我无法理解为什么它不起作用。 我有一个家长班:

public abstract class Parent {
    ...
}

和2个子课程:

public class Child1 extends Parent {
    ...
}

public class Child2 extends Parent {
    ...
}

我有一个方法,它正在使用子列表。但它应该同时使用Child1和Child2类型,所以我认为它应该工作:

public static void doSomething(List<Parent> list) {
    ...
}

这就是我所说的:

List<Child1> children = dao.getChildren("1");
doSomething(children);

List<Child2> children2 = dao.getChildren("2");
doSomething(children2);

但它不起作用,它显示了这个错误:

The method doSomething(List<Parent>) in the type MyClass is not applicable for the arguments (List<Child1>)
The method doSomething(List<Parent>) in the type MyClass is not applicable for the arguments (List<Child2>)

我怎么能写这段代码?

1 个答案:

答案 0 :(得分:5)

哦,我做到了!此代码适用于doSomething方法:

public static void doSomething(List<? extends Parent> list) {
    ...
}