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)
然后能够访问该子类中的方法和属性.如果我没有明白我的意思,我可以澄清一下.提前致谢!
填充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)