gpt4 book ai didi

java - 如何制作对象的防御性副本?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:43:31 30 4
gpt4 key购买 nike

如何制作包含不可变对象(immutable对象)中可变字段的可变对象的防御性副本?

class ImmutableObject {

private final MutableObject immutable_field;

ImmutableObject(MutableObject y) {
this.immutable_field = y;
}
}

class MutableObject {

public int mutable_field;
}
  • MutableObject 没有让我设置字段的构造函数。
  • MutableObject 的当前状态应该在 Immutable Object 中捕获并且永远不会改变。

最佳答案

你需要做的就在

  MutableObject return_immutable_field() {
return immutable_field;
}

更改为:

  MutableObject return_immutable_field() {
MutableObject tmp = new MutableObject();
tmp.mutable_field = immutable_field.mutable_field;
return tmp;
}

有关解释,请参阅 http://www.javapractices.com/topic/TopicAction.do?Id=15

关于java - 如何制作对象的防御性副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2954791/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com