如何制作包含不可变对象中的可变字段的可变对象的防御性副本?
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)