2011-05-25 36 views
4

我正在製作一個基本遊戲,使用二維數組(4x4),其中(對象類型與輸入1到16)的元素必須切換到達特定的目標狀態,這狀態必須與當前狀態進行比較,因此需要進行復制。二維數組的深度複製與所有元素

到目前爲止,我有:

public void cloneArray() throws CloneNotSupportedException 
    { 
     ClassName copy = (ClassName)super.clone(); 
     copy.tiles = (Tile[][]) tiles.clone(); 
    } 

這是否看起來是正確的,還是我失去了一些東西?

+0

[如何深度複製不規則二維數組]可能的重複(http://stackoverflow.com/questions/419858/how-to-deep-copy-an-irregular-2d-array) – finnw 2011-05-25 19:29:29

回答

3

你需要走一步,做像這樣:

ClassName copy = (ClassName)super.clone(); 
    copy.tiles = (Tile[][]) tiles.clone(); 
    for(int i = 0; i < copy.tiles.length; i++) { 
     copy.tiles[i] = (Tile[]) tiles[i].clone(); 
    } 

的原因是,克隆,使頂層陣列,其持有的其他數組引用的淺表副本。