这里的背景是一个图书馆系统的学校项目,图书馆有杂志和书籍。
我们有一个抽象类Register
,它由Book
和Magazine
扩展。现在需要实现一个可用于书籍和杂志的 Copy
类,其中包含返回日期、所有者、yadda yadda。
现在这对我们来说变得非常困惑,Copy
应该扩展 Book
或 Magazine
,并且这两个必须有一个 ArrayList复制到它们里面。
我很抱歉问题中缺乏具体说明,但我们在父类(super class)中实现子类列表的问题上绝对陷入困境和困惑。
最佳答案
根据您的描述,似乎 Copy
类不应扩展任何这些类,而应与 Register
关联,如下所示:
public class Copy {
Register original;
Register copy;
}
这样,你就可以知道原来的Register
实例和它的副本。上述设计的问题在于,您可以拥有 Book
类型的原件和 Magazine
类型的副本,反之亦然。为了解决这个问题,你可以使用泛型:
public class Copy<T extends Register> {
T original;
T copy;
}
然后,在 Book
类中,您可能会得到如下内容:
public class Book {
List<Copy<Book>> copies;
}
关于java - 其类中的子类列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30061662/