2

我已阅读以下文章SO

可外部化还是可序列化?,

Java中的可序列化和可外部化有什么区别?.

但我的问题是Externalizable,与serializable.

可以通过提供我们自己的and实现来自定义实现Serialization的 a 。那么使用 和定制和实现的目的是什么。使用的真正好处是什么。我已经阅读了各种支持自定义的链接(包括上面的链接)。但我没有看到一个明显的赢家或无法使用. 很高兴看到一个例子。classSerializablewriteObjectreadObjectExternalizableReadExternalwriteExternalExternalizableExternalizableserializationExternalizableSerializable

为了更清楚起见,从此处提取了以下代码段:

当一个class实现Serializable interface时,它会向这些提供信息JVMinstances这些信息classes可以被序列化。除此之外,还有一个特别说明JVM

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

所以这让我们有机会编写这两个方法:

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

里面Class那个实现Serializable,你得到一个serialization过程的钩子。您可以在这两种方法中编写自定义代码并自定义serialization.

4

1 回答 1

0

The main difference between Serializable and Externalizable is that Serializable automatically takes care of base classes for you. Externalizable leaves the entire job up to you.

于 2014-02-27T21:31:04.180 回答