有关外部化和序列化的问题



我们可以使用readresolve和writereplace方法来指定可外部化和可序列化实例的替换对象...

只是想知道几件事:

1)可以将ReadObject(ObjectInputStream is)和WriteObject(ObjectOutputStream OS)方法与可介绍类别一起使用ReadResolve()和Writereplace()用于可介绍的类别吗? 是否可以使用ReadObject和WriteObject替换对象,然后对字节流执行修改操作2)Exteralizable的WriteExternal应该与Supertype明确协调以保存其状态。只是想知道这对可序列化的超级类(但不可外部化)或可介绍的类别状态在我们写入stream时自动保存是正确的吗?

如果存在多种特殊方法的序列化类

,则方法的执行顺序

这些方法按以下顺序执行: -

发生序列化时,方法的执行顺序如下: -

writeReplace
writeObject
readObject
readResolve
validateObject

回答点1)

因此,问题1的答案是是

回答点2)

来自Javadoc序列化接口Javadoc,用于

的特殊方法
 private void writeObject(java.io.ObjectOutputStream out)
     throws IOException
The writeObject method does not need to concern itself with the state belonging to its superclasses or subclasses. State is saved by writing the individual fields to the ObjectOutputStream using the writeObject method or by using the methods for primitive data types supported by DataOutput.

最新更新