Java 当只知道对象的抽象基类时,如何复制对象

Java 当只知道对象的抽象基类时,如何复制对象,java,android,Java,Android,我有一个抽象基类MusicTime,它有几个具体的子类-Quaver,SemiQuaver,Crotchet等。子类实例包含在列表中我看到了一个干净和肮脏的解决方案: 为层次结构中的每个类实现clone()(从可克隆接口)方法(清洁解决方案) 使用instanceof操作符找出哪个类是(脏的解决方案)的对象实例我看到一个干净的和脏的解决方案: 为层次结构中的每个类实现clone()(从可克隆接口)方法(清洁解决方案) 使用instanceof操作符找出哪个类是(脏的解决方案)的对象实例我相信您可

我有一个抽象基类
MusicTime
,它有几个具体的子类-
Quaver
SemiQuaver
Crotchet
等。子类实例包含在
列表中我看到了一个干净和肮脏的解决方案:
  • 为层次结构中的每个类实现
    clone()
    (从可克隆接口)方法(清洁解决方案)
  • 使用
    instanceof
    操作符找出哪个类是(脏的解决方案)的对象实例我看到一个干净的和脏的解决方案:
  • 为层次结构中的每个类实现
    clone()
    (从可克隆接口)方法(清洁解决方案)
  • 使用
    instanceof
    操作符找出哪个类是(脏的解决方案)的对象实例

    我相信您可以使用原型设计模式,通过它您可以添加

    abstract MusicTime clone()
    
    在MusicTime基类中,并在创建自己对象的所有子类中实现。 当您遍历列表时,请调用克隆


    我相信您可以使用原型设计模式,通过它您可以添加

    abstract MusicTime clone()
    
    在MusicTime基类中,并在创建自己对象的所有子类中实现。 当您遍历列表时,请调用克隆


    这是一项与类继承相关的任务。为什么需要复制对象,并且可以使对象
    可克隆
    (或者添加一个
    duplicate()
    方法)?这是一项在类继承方面本质上很棘手的任务。为什么您需要复制对象,并且可以使对象可克隆(或添加一个
    replicate()
    方法)?谢谢,这是解决我问题的好办法。事实上,刚刚在GoF书中查找了原型模式,他们使用的示例几乎与此相同(音乐棒符号的图形表示法)。谢谢,这是解决我问题的一个好方法。事实上,刚刚在GoF书中查找了原型模式,他们使用的示例几乎与此相同(乐谱符号的图形表示法),谢谢,他们都是很好的建议。我当然想避免使用“肮脏”的方法,但我选择了原型模式的答案,因为我一直在尝试使用更多的模式。谢谢,它们都是很好的建议。我当然想避免使用“肮脏”的方法,但我选择了原型模式的答案,因为我一直在尝试使用更多的模式