考虑一个名为PowerHost
的父类。考虑一个名为PowerHostHistory
的子类,如下所示:
PowerHostHistory extends PowerHost
我有一个像这样定义的子类列表,它常常填充PowerHostHistory
个对象。
List<PowerHostHistory> excludedHosts = new LinkedList<PowerHostHistory>();
现在,我将以一种不同的方式向PowerHost
添加excludedHosts
个对象列表。
我想将父对象列表添加到子对象列表中。这有可能,怎么样?
答案 0 :(得分:2)
可以通过简单地丢弃泛型类型来实现:
PowerHost powerHost = ...
((List)excludedHosts).add(powerHost);
但没有意义:您声明excludedHosts
为List<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());
然后你可以添加两者。
希望它有所帮助!!