-4

死所有,

我有以下内容:

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();

其次,我已经测试了您的代码并且它打印出来6,而不是17您在问题中所说的那样。

编辑我注意到您已经修复了编辑中的第一个问题。但是,代码的行为仍然不像您所说的那样。

于 2013-03-21T22:00:23.173 回答
0

结果应该是 6 而不是 17。

于 2013-03-21T22:09:13.450 回答