我有一个抽象基类MusicTime
,它有几个具体的子类-Quaver
,SemiQuaver
,Crotchet
等。这些子类实例包含在List<? extends MusicTime>
集合中。
我需要能够克隆这些对象,并通过遍历集合并基于现有实例创建新实例来手动执行此操作。我显然不能实例化一个抽象类,那么有什么方法可以调用与每个现有实例相同的MusicTime
构造函数?因此,如果它是Quaver
,那么我将创建一个新的Quaver
对象?
最佳答案
我相信您可以使用Prototype设计模式,并添加
abstract MusicTime clone()
在您的MusicTime基类中,并在所有创建其自己的对象的子类中实现。
当您遍历列表调用克隆时。
http://www.codeproject.com/Articles/42582/Prototype-Design-Pattern
http://java.dzone.com/articles/design-patterns-prototype