如果我有一个父对象的链表,例如:
LinkedList<ParentClass> list = new LinkedList<ParentClass>();
我想用不同类型的子对象(都扩展“ParentClass”)来填充它们,我将如何去做呢? 另请注意,我不知道将使用哪个特定的子类。例如我可以尝试这样做:
list.add(someInstanceOfAChildClass);
然后能够访问该子类中的方法和属性。 如果我没有明白我的意思,我可以澄清一下。 提前致谢!
最佳答案
填写 List<Parent>
不会有任何问题与不同Child
对象,但您无法访问 Child
的方法和属性直接。如果您尝试分配 List
Child
类型引用的成员,你会得到一个类型不匹配错误。
要解决此问题,您可以强制转换 List
返回的对象。明确地。
Child iThinkItsChild = (Child) listOfParents.get(indexOfChild);
但是,为了安全地进行操作,您应该使用 instanceof
运算符(operator)优先。
Parent parent = listOfParents.get(indexOfChild);
if (parent instanceof Child) {
Child imSureItsChildNow = (Child) parent;
imSureItsChildNow.childMethod();
}
关于Java List 如何设置和获取父类型列表的子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28784772/