我有一个抽象基类MusicTime
,它有几个具体的子类 - Quaver
,SemiQuaver
,Crotchet
等。子类实例包含在{{1收集。
我需要能够克隆这些对象,并且通过迭代集合并基于现有实例创建新实例来手动执行此操作。我显然无法实例化一个抽象类,那么有没有办法调用与每个现有实例相同的List<? extends MusicTime>
构造函数的构造函数?如果它是MusicTime
,那么我会创建一个新的Quaver
对象吗?
答案 0 :(得分:3)
我看到一个干净而肮脏的解决方案:
clone()
(来自Cloneable接口)方法(干净解决方案)
instanceof
运算符找出哪个类是(脏解决方案)的对象实例
答案 1 :(得分:1)
我相信你可以使用Prototype设计模式,你可以添加
abstract MusicTime clone()
在您的MusicTime基类中,并在所有创建自己的对象的子类中实现。 当您遍历列表调用克隆时。
http://www.codeproject.com/Articles/42582/Prototype-Design-Pattern