Java列表如何设置和获取父类型列表的子对象

Ben*_*gel 5 java inheritance linked-list parent-child

如果我有一个父对象的链接列表,如:

LinkedList<ParentClass> list = new LinkedList<ParentClass>();
Run Code Online (Sandbox Code Playgroud)

我想用不同类型的子对象(所有扩展为"ParentClass")来填充它们,我将如何进行此操作.另请注意,我不知道将使用哪个特定的子类.例如,我可以尝试:

list.add(someInstanceOfAChildClass);
Run Code Online (Sandbox Code Playgroud)

然后能够访问该子类中的方法和属性.如果我没有明白我的意思,我可以澄清一下.提前致谢!

Rav*_*yal 5

填充List<Parent>不同的Child对象没有问题,但是您无法Child直接访问方法和属性.如果您尝试将List成员分配给类型的引用Child,则会出现类型不匹配错误.

要解决此问题,您可以键入castList显式返回的对象.

Child iThinkItsChild = (Child) listOfParents.get(indexOfChild);
Run Code Online (Sandbox Code Playgroud)

但是,要安全地进行instanceof操作,首先应该使用操作员.

Parent parent = listOfParents.get(indexOfChild);
if (parent instanceof Child) {
    Child imSureItsChildNow = (Child) parent;
    imSureItsChildNow.childMethod();
}
Run Code Online (Sandbox Code Playgroud)


Zie*_*elu 1

您只需添加子类元素即可。当它们扩展 ParentClass 时,它们可以添加到任何保存 ParentClass 类型的集合中。