Serializable 和 Externalizable 有何不同

Java中的类通过实现 java.io.Serializable 接口以启⽤其序列化功能。 未实现此接口的类将⽆法使其任何状态序列化或反序列化。

可序列化类的所有⼦类型本⾝都是可序列化的。

序列化接口没有⽅法或字段, 仅⽤于标识可序列化的语义。

当试图对⼀个对象进⾏序列化的时候, 如果遇到不⽀持Serializable 接口的对象。 在此情况下, 将抛NotSerializableException

如果要序列化的类有⽗类, 要想同时将在⽗类中定义过的变量持久化下来, 那么⽗类也应该集成java.io.Serializable接口。

Externalizable继承了Serializable, 该接口中定义了两个抽象⽅法:writeExternal()readExternal()。 当使⽤Externalizable接口来进⾏序列化与反序列化的时候需要开发⼈员重写writeExternal()与readExternal()⽅法。

如果没有在这两个⽅法中定义序列化实现细节, 那么序列化之后, 对象内容为空。

实现Externalizable接口的类必须要提供⼀个public的⽆参的构造器。

所以, 实现Externalizable, 并实现writeExternal()readExternal()⽅法可以指定序列化哪些属性。

posted @ 2022-12-27 10:40  珍&惜  阅读(57)  评论(0)    收藏  举报