2013-10-22 131 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(); 
    } 
    } 
}