繁体   English   中英

当仅知道其抽象基类时如何复制对象

[英]How to copy an object when only its abstract base class is known

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

    http://java.dzone.com/articles/design-patterns-prototype

    暂无
    暂无

    声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

     
    粤ICP备18138465号  © 2020-2024 STACKOOM.COM