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

标签 java inheritance linked-list parent-child

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

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/

相关文章:

java - 在java中打乱String数组内容的函数

java - 关于多线程的问题

java - 如何将 Spring Data JPA 查询提取到单独的文件

java - JFreeChart - 带日期轴的水平堆叠条形图

java - 抛出自定义 Java 异常

java - 为什么 Java/Scala 使用 extends/implements 关键字?

Ruby 类变量

c++ - 在第二个派生类中调用一个派生类的函数

java - 如何在 Java 中对键上的映射列表进行排序?

c - 链表插入排序