簡體   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