我需要开发一个包含多种库类型的库的列表。例如,库可以是视频库或照片库。如果相关,我想使用 JavaFX 遵循 MVC 设计模式。请参阅下面关于我的问题的 UML 图:
图 1
所以我想我会像这样在我的库模型中为列表使用通用类型:
public class LibraryModel<T> {
private List<T> aList;
}
但是,这不起作用,因为当我实例化库列表时,我需要指定一个类型。因此,通过这种方式,我只能将照片库或视频库指定为列表,而不能同时指定两者。
我尝试引入一个名为“Library”的通用类型,它将列在列表中(作为父类(super class)),由 PhotoController/VideoController 扩展:
图 2
public class LibraryModel {
private List<Library> aList;
}
在图 2 中,我可以创建一个通用库列表。但这将如何影响我执行特定照片/视频任务的能力?假设我有以下方法:
父类(super class)方法:
displayAll()
add()
remove()
图片库方法:
displaySlideShow()
视频库方法:
playVideo()
通过将库存储为父类(super class),我将如何调用其他库类型的特定方法?这合法吗?
请放轻松,我还在学习 Java,在此先感谢。
最佳答案
使用抽象类
图书馆。
abstract class Library {
}
然后创建子类。
照片库。
class PhotoLibrary extends Library {
displaySlideShow(){
}
}
视频库。
class VideoLibrary extends Library {
playVideo() {
}
}
在主类或其他类中你可以使用它们。
private List<Library> aList;
aList.add(new PhotoLibrary());
VideoLibrary l2 = new VideoLibrary();
aList.add(l2);
然后你可以调用可用的方法,
Library l = aList(i);
if(l instanceof PhotoLibrary) {
PhotoLibrary pl = (PhotoLibrary)l;
pl.displaySlideShow();
}
else if(l instanceof VideoLibrary) {
VideoLibrary vl = (VideoLibrary)l;
vl.playVideo();
}
关于java - 在 Java/JavaFX 中实现可以容纳多种数据类型的通用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26987807/