0

クラスをディープコピーするメソッドを構築しようとしています:

public MyClass clne() {
    MyClass cpy = new MyClass();
    cpy.var1 = getVar1(); //getVar1 is a method returning the value of var1
    cpy.var2 = getVar2();
    return cpy;
}

ただし、実行すると:

MyClass x = new MyClass();
x.var1 = 18;
MyClass y = x.clne();
y.myMethod(); // Where myMethod is a method changing the value of var1 to, say 4.
System.out.println(x.var1);

x.var1 の値は 4 です。

私は何か間違ったことをしていますか?ありがとうございました :)

4

1 に答える 1

0

もちろん、それらがプリミティブでない限り、古い参照を指すのではなく、var1 の新しいインスタンスを作成する必要があります。

cpy.var1 = new Var1( getVar1() );

これには、クラス Var1 が何であれ、コピー コンストラクターを作成する必要があります。ただし、これは他の方法でも実行できます。

それが役立つことを願っています。

PS、基本的に浅いコピーを行っています。

于 2013-03-22T00:02:39.837 に答える