我在我的拷貝構造函數的java的clone()與數組
protected int forca;
protected Spell []feitico;
public Picareta(final Picareta rValue)
{
super((Ferramenta)rValue);
this.forca=rValue.forca;
this.feitico=rValue.feitico.clone();
}
想這一點,但feitico具有相同的參考而非陣列
在克隆的對象我真的需要克隆的每一個元素在數組中,還是我的克隆()爲拼寫錯誤?
public Spell clone() throws CloneNotSupportedException
{
super.clone();
Spell temp= new Spell(this);
return temp;
}
或者這是最好的(緊湊)方式嗎?
public Picareta(final Picareta rValue)
{
super((Ferramenta)rValue);
this.forca=rValue.forca;
this.feitico=new Spell[rValue.feitico.length];
for (int i=0;i<rValue.feitico.length;i++)
this.feitico[i]=new Spell(rValue.feitico[i]);
}
是的,你真的需要複製數組內的每個元素。 –
那麼clone()方法只對數組基元?有用,因爲我通過array.clone()應該在其內部使用我的clone()方法,或者甚至是複製構造函數 –
。假設'clone()'完全有用,哪個...呃。 (一般來說,最好的做法是使幾乎所有東西都是不變的,在這種情況下,你永遠不需要複製。) –