您好我有一个名为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班上添加一些内容,但我还没弄清楚。 谢谢!
答案 0 :(得分:0)
你试过复制构造函数吗?你用的是哪种语言?
答案 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();
}
}
}