Java 序列化可以实现定制,那么为什么外部化呢?
我已经阅读了Java 序列化可以实现定制,那么为什么外部化呢?,java,serialization,serializable,externalizable,Java,Serialization,Serializable,Externalizable,我已经阅读了上的这些文章,所以: , 但我的问题是,与可序列化相比,通过实现可外部化可以产生哪些额外的定制 通过给出我们自己的writeObject和readObject实现Serializable,可以自定义实现可序列化的类的序列化。那么使用Externalizable和自定义ReadExternal和writeExternal实现的目的是什么呢。使用Externalizable的真正好处是什么。我读过很多链接,上面说Externalizable支持自定义序列化(包括上面的一个)。但是我没有
上的这些文章,所以
:
,
但我的问题是,与可序列化
相比,通过实现可外部化
可以产生哪些额外的定制
通过给出我们自己的writeObject
和readObject
实现Serializable
,可以自定义实现可序列化的类的序列化
。那么使用Externalizable
和自定义ReadExternal
和writeExternal
实现的目的是什么呢。使用Externalizable
的真正好处是什么。我读过很多链接,上面说Externalizable
支持自定义序列化
(包括上面的一个)。但是我没有看到一个例子,其中Externalizable
是一个明显的赢家,或者是使用Serializable
无法做到的事情。很高兴看到一个例子
为了更加清晰,以下代码片段摘自:
当类
实现可序列化接口
时,它向JVM
提供信息,说明这些类的实例
可以序列化。除此之外,还有一个关于JVM
“在实现Serializable的类中查找以下两个方法。如果找到,请调用该方法并继续序列化过程,否则直接遵循标准序列化协议”
因此,这给了我们一个编写这两种方法的机会:
private void writeObject(ObjectOutputStream out)抛出IOException代码>,,
private void readObject(ObjectInputStream in)抛出IOException、ClassNotFoundException代码>
在实现Serializable
的类
中,您可以获得一个到序列化
过程的钩子。您可以在这两个方法中编写自定义代码,并自定义序列化的标准行为可序列化和可外部化之间的主要区别在于可序列化自动为您处理基类。Externalizable将整个工作留给您