【问题标题】:Deep Copying Error [closed]深度复制错误[关闭]
【发布时间】:2013-03-11 15:21:38
【问题描述】:

死了,

我有以下几点:

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。但是,深度复制不应该阻止这种情况吗?

谁能帮帮我?

【问题讨论】:

  • 为我打印6,包括原始代码和修改后的代码。
  • 当您问“为什么我的代码执行 X?”时,真的很难为您提供帮助,而实际上它执行 X。

标签: java deep-copy


【解决方案1】:

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

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

其次,我已经测试了您的代码,它打印的是6,而不是您在问题中所说的17

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

【讨论】:

  • 第三:这甚至不是深拷贝;-)
  • @ITroubs:我本来想对这个说点什么,但后来觉得它很深足够 ;)
  • 是的,他对帖子的最后一次编辑修复了这个错误,现在它返回 17。它最初没有相同的代码。
【解决方案2】:

结果应该是 6 而不是 17。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 2017-11-20
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多