-4

Dea All、

私は次のものを持っています:

class test {
    int x = 6;
    int y = 7;

    private int getX() {
        return x;
    }

    private int getY() {
        return y;
    }

    public test copy() {
        test myTest = new test();
        myTest.x = getX();
        myTest.y = getY();
        return myTest;
    }
}

ただし、次に実行すると、次のようになります。

test a = new test();
test b = a.copy();
b.x = 17;
System.out.println(a.x);

結果はまだ17です。しかし、ディープコピーはこれを防ぐべきではありませんか?

私を助けることができる人はいますか?

4

2 に答える 2

3

まず、b.copy()in の戻り値を無視しています:

test b = new test();
b.copy();

第二に、私はあなたのコードをテストしましたが、あなたが質問で言ったようには印刷されません617

編集 編集の最初の問題を修正したことに気付きました。ただし、コードはまだあなたが言ったようには動作しません。

于 2013-03-21T22:00:23.173 に答える
0

結果は 17 ではなく 6 になるはずです。

于 2013-03-21T22:09:13.450 に答える