首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定制可以通过序列化实现,那么为什么要使用Externalizable呢?

定制可以通过序列化实现,那么为什么要使用Externalizable呢?
EN

Stack Overflow用户
提问于 2014-02-28 03:25:42
回答 1查看 107关注 0票数 2

我在SO上读过这些文章:

Externalizable or Serializable?

What is the difference between Serializable and Externalizable in Java?

但我的问题是,与serializable相比,通过实现Externalizable可以获得哪些额外的定制。

通过给出我们自己的writeObjectreadObject实现,可以定制实现SerializableclassSerialization。那么使用Externalizable和自定义ReadExternalwriteExternal实现的目的是什么。使用Externalizable的真正好处是什么?我读过各种链接,上面说Externalizable支持自定义serialization (包括上面的链接)。但我没有看到一个例子表明Externalizable是一个明显的赢家,或者是一些使用Serializable无法完成的事情。如果能看到这方面的例子就好了。

为了更清楚起见,下面的代码片段摘自here

class实现Serializable interface时,它向JVM提供这些classesinstances可以序列化的信息。除此之外,还有一条关于JVM的特别说明

“在实现Serializable的类中查找以下两个方法。如果找到,则调用该方法并继续序列化过程,否则直接遵循标准序列化协议。”

因此,这给了我们编写这两个方法的机会:

private void writeObject(ObjectOutputStream out) throws IOException;private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;

在实现SerializableClass中,您将获得一个到serialization进程的钩子。您可以在这两个方法中编写自定义代码,并自定义serialization的标准行为。

EN

回答 1

Stack Overflow用户

发布于 2014-02-28 05:31:04

Serializable和Externalizable之间的主要区别在于,Serializable会自动为您处理基类。Externalizable将整个工作留给您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22078407

复制
相关文章

相似问题

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