2013-10-22 170 views
0

你好,我有一個名爲Ladrillo的類,在另一個類中,我有一個2D類型的Ladrillo類型。 我想克隆該數組,以便如果原來的更改這一個不。克隆一個2D陣列

從我在ladrillo課上在線閱讀的內容中,我必須將可實施化。 我這樣做,和下面的代碼,但它不工作:

Ladrillo [][] copy=new Ladrillo[original.length][original.length]; 

for(int i=0;i<original.length;i++){ 
    for(int j=0;j<original.length;j++){ 
    Ladrillo newLadrillo=original[i][j].clone(); 
    copy[i][j]=newLadrillo; 
}} 

什麼改變任何想法?我相信我不得不在Ladrillo類上添加一些東西,但我還沒有弄明白。 謝謝!

+0

這是什麼意思_it沒有工作:_?請指出您正面臨的確切問題,您期望什麼以及目前發生了什麼? – Smit

回答

0

的clone()方法只創建數組的一個淺表副本,如果它的值不是原語。對於深拷貝,你可以使用靜態方法

java.lang.System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 

或實現您的Ladrillo類的clone()方法。下面是一個名爲Player的類的示例,其中包含兩個字段,應在調用clone()方法時進行復制。我們只是簡單地調用它的超類(這是Player類的java.lang.Object)clone() - 方法並將結果轉換爲Player。

public class Player implements Cloneable { 
    public String name; 
    public int age; 

    @Override 
    public Player clone() { 
    try { 
    return (Player) super.clone(); 
    } 
    catch (CloneNotSupportedException e) { // its cloneable 
    throw new InternalError(); 
    } 
    } 
}