2011-05-25 85 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(); 
    } 

的原因是,克隆,使顶层阵列,其持有的其他数组引用的浅表副本。