[英]How to copy an object when only its abstract base class is known
我有一个抽象基类MusicTime
,它具有几个具体的子类Quaver
, SemiQuaver
, Crotchet
等。这些子类实例包含在List<? extends MusicTime>
List<? extends MusicTime>
集合。
我需要能够克隆这些对象,并通过遍历集合并基于现有实例创建新实例来手动执行此操作。 我显然不能实例化一个抽象类,那么有什么方法可以调用与每个现有实例相同的MusicTime
构造函数的构造函数? 因此,如果它是Quaver
那么我将创建一个新的Quaver
对象?
我看到一个干净又肮脏的解决方案:
clone()
(从Cloneable接口)方法 instanceof
运算符找出哪个类是(肮脏的解决方案)的对象实例 我相信您可以使用Prototype设计模式,并添加
abstract MusicTime clone()
在您的MusicTime基类中,并在所有创建其自己的对象的子类中实现。 当您遍历列表调用克隆时。
http://www.codeproject.com/Articles/42582/Prototype-Design-Pattern
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.