本文介绍了如何制作对象的防御性副本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何制作包含不可变对象中可变字段的Mutable对象的防御性副本?
How do I make defensive copies of a Mutable Object which contains a mutable field in an Immutable Object?
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;
}
有关解释,请参阅
这篇关于如何制作对象的防御性副本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!