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()
以避免内存泄漏。在您的情况下,它将确保再次发送所有对象。

我知道,这也是我的方法,但这会减慢操作。您认为有没有更好的方法,也许不必重写所有已序列化的对象?另一种方法是每次发送不同的对象。或者复制它,或者使其不可变,只替换它。