在Java中 Serializable 和 Externalizable 之间的差异
时间:2020-02-23 14:34:07 来源:igfitidea点击:
在本教程中,我们将在Java中看到可序列化和外部化接口之间的差异。
Serializable(可序列化):
它是标记接口,如果我们实现此接口,则无需提供任何方法。
如果任何类实现可序列化接口时,JVM将负责序列化该对象。
Externalizable:
顾名思义,它正在外部化序列化。
如果我们要自定义序列化机制,则可以使用它。
它使用自定义书面机制来执行ressshaling和Objects的Marshaling和Unmarshalling .externaLizable接口扩展了可序列化接口。
如果实现此接口,则需要提供readExternal()和Writeexternal()方法的实现。
externizable VS Serializable:
参数 | Serializable | Externalizable |
---|---|---|
标记接口 | 它是标记接口。我们不必提供任何方法的实现。 | 外部化不是标记接口,我们必须覆盖WriteeXternal和ReadExternal方法。 |
控制 | 序列化接口对序列化进程的控制较少,它是可选的,可以覆盖readObject和writeObject。 | 外部接口对序列化进程有更多的控制,强制覆盖Writeexternal和ReadExternal。 |
性能 | JVM使用反射在可序列化接口的情况下执行序列化,这非常慢。 | 程序员必须实现readexternal和writexternal方法,但它相对较好的性能 |
supersedes | 没有 | 如果实现了外部化接口并提供了readExternal和writeexternal的实现,那么它在该类中取代了readObject和WriteObject方法。它是由于外部化延伸可序列化接口。 |
构造函数在Deserialization 期间调用 | 默认构造函数未在反序列化进程中调用。 | 默认构造函数在反序列化进程中调用。 |