簡體   English   中英

java Cloneable:基類錯誤地實現了它; 該怎么辦?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM