0

こんにちは、Ladrillo というクラスがあり、別のクラスには 2 次元配列型の 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 に何かを追加する必要があると思いますが、まだわかりません。ありがとう!

4

2 に答える 2

0

clone() メソッドは、配列の値がプリミティブでない場合にのみ、配列の浅いコピーを作成します。ディープ コピーの場合は、静的メソッドを使用できます

java.lang.System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 

または Ladrillo クラスに clone() メソッドを実装します。clone() メソッドが呼び出されたときにコピーする必要がある 2 つのフィールドを持つ Player というクラスの例を次に示します。そのスーパークラス (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();
    }
  }
}
于 2013-10-22T21:37:53.130 に答える
0

コピーコンストラクターを試しましたか? どの言語を使用していますか?

C++ のコピー コンストラクターとはを参照してください。

于 2013-10-22T18:56:05.423 に答える