Java writeUnshared写入类似writeObject的字段
所以我有一个这样的包装器类:Java writeUnshared写入类似writeObject的字段,java,serialization,Java,Serialization,所以我有一个这样的包装器类: class VeryWrapper { Wrapper wrp = new Wrapper(); int val = 0; } 其中,Wrapper定义为: class Wrapper { int val = 0; } 现在,如果我想将其序列化为流,请同时更改val和wrp.val,并使用新状态对其进行序列化。我知道使用writeObject会导致流的另一端接收旧状态。因此,在这种情况下,必须使用writeUnshared。但问题是,使用
class VeryWrapper
{
Wrapper wrp = new Wrapper();
int val = 0;
}
其中,Wrapper
定义为:
class Wrapper
{
int val = 0;
}
现在,如果我想将其序列化为流,请同时更改
val
和wrp.val
,并使用新状态对其进行序列化。我知道使用writeObject
会导致流的另一端接收旧状态。因此,在这种情况下,必须使用writeUnshared
。但问题是,使用这种方法,只有对象本身将不共享,而不是其字段(wrp
field,我的意思是),因此val
的值将被更新,但wrp.val
的值仍将是旧值。如何解决此问题?最好定期调用reset()
以避免内存泄漏。在您的情况下,它将确保再次发送所有对象。我知道,这也是我的方法,但这会减慢操作。您认为有没有更好的方法,也许不必重写所有已序列化的对象?另一种方法是每次发送不同的对象。或者复制它,或者使其不可变,只替换它。