Java 深度复制错误
Dea所有人 我有以下资料: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();
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时,很难帮助你。