Java 深度复制错误

Java 深度复制错误,java,deep-copy,Java,Deep Copy,Dea所有人 我有以下资料: 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();

Dea所有人

我有以下资料:

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。然而,深度复制不应该阻止这一点吗


有谁能帮我吗?

首先,您忽略了中
b.copy()
的返回值:

test b = new test();
b.copy();
其次,我测试了您的代码,它打印的是
6
,而不是您在问题中所说的
17


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

结果应该是6而不是17。

第三:这甚至不是深度复制;-)@伊特罗布斯:我本来想说一些关于这件事的话,但后来决定说得够深了;)是的,他对帖子的最后一次编辑修复了bug,现在返回17。它最初没有相同的代码。为我打印
6
,包括原始代码和修订后的代码。当你问“为什么我的代码做X?”,而实际上它不做X时,很难帮助你。