[英]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.