Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java/JavaFX中实现可以保存多种数据类型的通用列表_Java_List_Model View Controller_Javafx_Uml - Fatal编程技术网

在Java/JavaFX中实现可以保存多种数据类型的通用列表

在Java/JavaFX中实现可以保存多种数据类型的通用列表,java,list,model-view-controller,javafx,uml,Java,List,Model View Controller,Javafx,Uml,我需要开发一个包含多种库类型的库的列表。例如,该库可以是视频库,也可以是照片库。如果相关的话,我想使用JavaFX遵循MVC设计模式。关于我的问题,请参见下面的UML图: 图1 所以我想我应该在我的库模型中为列表使用一个泛型类型,如下所示: public class LibraryModel<T> { private List<T> aList; } 照片库方法: displaySlideShow() playVideo() 视频库方法: displayS

我需要开发一个包含多种库类型的库的列表。例如,该库可以是视频库,也可以是照片库。如果相关的话,我想使用JavaFX遵循MVC设计模式。关于我的问题,请参见下面的UML图:

图1

所以我想我应该在我的库模型中为列表使用一个泛型类型,如下所示:

public class LibraryModel<T> {
    private List<T> aList;
}
照片库方法:

displaySlideShow()
playVideo()
视频库方法:

displaySlideShow()
playVideo()
通过将库存储为超类,我将如何调用其他库类型的特定方法?这合法吗

请放松点,我还在学习Java,提前谢谢。

使用抽象类

图书馆

abstract class Library {

}
然后创建子类

照片库

class PhotoLibrary extends Library {

     displaySlideShow(){

     }   
}
class VideoLibrary extends Library {

        playVideo() {

        }

}
视频库

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);

在您的代码中,我是否可以将库接口留空?我真的只想对列表进行操作(添加/删除/显示)。除了列表操作之外,它们不会有任何重叠的方法。除此之外,我是否能够调用仅对一个库可用的特定方法,如:aList.get(2).playVideo()//仅当对象类型为VideoLibrary时可用我使用了您的代码,这回答了我自己的问题。如果列表的类型是接口的类型,我肯定只限于接口的方法。这让我质疑如何访问不属于接口的其他方法。很好,这正是我所需要的,谢谢:)您想要实现。