java-Externalizable

实现java序列化的另一个方法就是实现Externalizable接口了。

那什么时候我们需要使用Externalizable接口而不是Serializable接口呢?

当需要对序列化的对象进行精准的控制的时候(对想要进行序列化的部分进行序列化),我们就可以实现Externalizable接口。

如何去做?

与Serializable的几乎完全自动不同,我们在使用Externalizable接口的时候需要自己去重写writeExternal()和readExternal()这两个方法。

其中writeExternal()是在序列化的时候进行调用,将需要保存的地方进行保存。

readExternal()是在反序列化的时候进行调用,这个时候JVM会首先调用需要反序列化的对象的无参构造函数,然后再调用readExternal()方法对对象进行恢复。

需要注意的是

1.writeExternal()方法是对序列化的完全控制,他可以使transient变量也进行序列化,所以请不要将Externalizable接口和transient变量进行搭配使用。

打赏