克隆一个2d数组

时间:2013-10-22 18:49:36

标签: java arrays multidimensional-array clone

您好我有一个名为Ladrillo的类,而在另一个类中我有一个2D数组类型Ladrillo。 我想克隆那个数组,这样如果原来的那个改变了,那就不行了。

根据我在ladrillo课程中的在线阅读,我必须将Implements克隆。 我这样做了以下代码,但它没有用:

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班上添加一些内容,但我还没弄清楚。 谢谢!

2 个答案:

答案 0 :(得分:0)

你试过复制构造函数吗?你用的是哪种语言?

请参阅What is a copy constructor in C++?

答案 1 :(得分: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();
    }
  }
}