Java 从父类存储/获取子类
我有两门课,书籍和杂志,它们都扩展了参考课。 我最初将它们存储到单独的ArrayList中,但现在需要将它们全部存储到引用ArrayList中 我使用原来的2个ArrayList来存储用户引用,然后当他们搜索它时,它会搜索两个数组来找到它Java 从父类存储/获取子类,java,arraylist,Java,Arraylist,我有两门课,书籍和杂志,它们都扩展了参考课。 我最初将它们存储到单独的ArrayList中,但现在需要将它们全部存储到引用ArrayList中 我使用原来的2个ArrayList来存储用户引用,然后当他们搜索它时,它会搜索两个数组来找到它 我的问题是如何使用book和journal类中的函数?或重写的函数。在迭代列表时,您可以检查它是书籍还是日志,然后调用特定于书籍和日志的方法: for (Reference ref : list) { if (ref instanceof Book)
我的问题是如何使用book和journal类中的函数?或重写的函数。在迭代
列表时,您可以检查它是书籍
还是日志
,然后调用特定于书籍
和日志
的方法:
for (Reference ref : list) {
if (ref instanceof Book) {
((Book) ref).bookMethod();
} else if (ref instanceof Journal) {
((Journal) ref).journalMethod();
}
}
如果从Reference
调用方法,则不需要使用instanceof
或强制转换到Book/Journal
,这些方法可能会被覆盖,也可能不会被覆盖:
for (Reference ref : list) {
ref.doSomething();
}
如果Book
和Journal
都覆盖doSomething()
,则它将执行Book/Journal
特定实现,否则它将使用Reference
实现。如果Book
和Journal
对象都扩展了Reference
,则应该能够将它们存储在列表中。如果它们都重写了Reference
中的函数,您可以在其中任何一个上调用这些方法,它将为每个方法调用重写的方法。如果您想专门使用Book
或Journal
中的函数,则必须对其进行适当的强制转换。@JackmeriusTacktheritrix但Book具有特定的字符串,这些字符串对于它的类是唯一的,Journal也是唯一的,因此这些字符串最初是否会保留在列表中?它们仍然会“保留”。如果您发布一些您关心访问的代码,可能会有所帮助。