我有一个抽象基类MusicTime,它有几个具体的子类-QuaverSemiQuaverCrotchet等。这些子类实例包含在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

07-24 15:27