[英]java Cloneable: Base class implements it incorrectly; what to do?
我正在使用實現Cloneable接口的程序包中的類(我們將其稱為BaseClass),但它似乎是通過創建新對象而不是通過調用super.clone()來實現的。 我已經創建了這個BaseClass的子類,然后在嘗試克隆它時崩潰。 在代碼中,我有這樣的東西:
// from library
class BaseClass implements Cloneable{
public void clone(){
BaseClass clone = new BaseClass(); // I guess?
...
return clone;
}
}
// my subclass
class SubClass extends BaseClass{
public void clone() throws CloneNotSupportedException {
return (SubClass) super.clone(); // throws ClassCastException
}
}
一種方法是跳過擴展BaseClass並僅使用指針,盡管這確實會使我的代碼復雜化。
如果我真的需要能夠(一種或另一種方式)進行復印,該怎么辦?
謝謝
沒有看到確切的BaseClass clone()方法,我/我們不能肯定地回答。 但是我要告訴您的是,位於Object
中的默認克隆方法會將所有字段從要克隆的對象復制到新的對象中。 有時,盡管您可能想覆蓋此功能以克隆引用的對象,而不是讓原始對象和克隆都指向同一對象。
在您的SubClass.clone中,不要調用super.clone()而是自己創建一個新的SubClass:
public void clone(){
SubClass clone = new SubClass();
//copy properties from this to clone
return clone;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.