首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Externalizable和系列化的问题

关于Externalizable和系列化的问题
EN

Stack Overflow用户
提问于 2014-01-26 15:29:26
回答 1查看 77关注 0票数 0

我们可以使用readResolve和writeReplace方法为可扩展和可序列化的实例指定替换对象。

我只想知道几件事:

1)对于一个Serilaizable类,readObject(ObjectInputStream is )和writeObject(ObjectOutputStream os)方法能否与readResolve()和writeReplace()结合使用?可以替换对象,然后使用readObject和writeObject对字节流执行修改操作吗?Exteralizable的writeExternal应该显式地与超级类型协调,以保存它的state.Just,希望知道是否也适用于可序列化的超类(但不是Externalizable),或者当我们将实例写入流时会自动保存Serilizable类状态?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-28 18:03:48

如果一个可序列化类存在多个特殊方法,则方法的执行顺序

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

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

代码语言:javascript
复制
writeReplace
writeObject
readObject
readResolve
validateObject

对第1点的答复)

因此,问题1的答案是肯定的。

(对第2点的答复)

,用于特殊方法,如

代码语言:javascript
复制
 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.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21365282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档