如何将父对象列表添加到子对象列表

时间:2015-09-23 05:51:24

标签: java inheritance polymorphism

考虑一个名为PowerHost的父类。考虑一个名为PowerHostHistory的子类,如下所示:

PowerHostHistory extends PowerHost

我有一个像这样定义的子类列表,它常常填充PowerHostHistory个对象。

List<PowerHostHistory> excludedHosts = new LinkedList<PowerHostHistory>();

现在,我将以一种不同的方式向PowerHost添加excludedHosts个对象列表。

我想将父对象列表添加到子对象列表中。这有可能,怎么样?

2 个答案:

答案 0 :(得分:2)

可以通过简单地丢弃泛型类型来实现:

PowerHost powerHost = ...
((List)excludedHosts).add(powerHost);

但没有意义:您声明excludedHostsList<PowerHostHistory>类型,然后添加一些非PowerHostHistory个对象。 每个使用列表元素的人都会感到惊讶。

您应该决定是否需要PowerHostHistory的列表:然后不要向其添加PowerHost个对象。或者您想要一个PowerHost列表,然后您可以添加PowerHost个对象。

答案 1 :(得分:1)

您可以通过downCasting添加父对象。你可以这样做:

excludedHosts.add((PowerHostHistory)new PowerHost());

但它会给出RunTime异常

相反,为什么你不这样做:

List<PowerHost> excludedHosts = new LinkedList<PowerHost>();

        excludedHosts.add(new PowerHost());
        excludedHosts.add(new PowerHostHistory());

然后你可以添加两者。

希望它有所帮助!!