在Java中 Serializable 和 Externalizable 之间的差异

时间:2020-02-23 14:34:07  来源:igfitidea点击:

在本教程中,我们将在Java中看到可序列化和外部化接口之间的差异。

Serializable(可序列化):

它是标记接口,如果我们实现此接口,则无需提供任何方法。
如果任何类实现可序列化接口时,JVM将负责序列化该对象。

Externalizable:

顾名思义,它正在外部化序列化。
如果我们要自定义序列化机制,则可以使用它。
它使用自定义书面机制来执行ressshaling和Objects的Marshaling和Unmarshalling .externaLizable接口扩展了可序列化接口。
如果实现此接口,则需要提供readExternal()和Writeexternal()方法的实现。

externizable VS Serializable:

参数SerializableExternalizable
标记接口它是标记接口。我们不必提供任何方法的实现。外部化不是标记接口,我们必须覆盖WriteeXternal和ReadExternal方法。
控制序列化接口对序列化进程的控制较少,它是可选的,可以覆盖readObject和writeObject。外部接口对序列化进程有更多的控制,强制覆盖Writeexternal和ReadExternal。
性能JVM使用反射在可序列化接口的情况下执行序列化,这非常慢。程序员必须实现readexternal和writexternal方法,但它相对较好的性能
supersedes没有如果实现了外部化接口并提供了readExternal和writeexternal的实现,那么它在该类中取代了readObject和WriteObject方法。它是由于外部化延伸可序列化接口。
构造函数在Deserialization 期间调用默认构造函数未在反序列化进程中调用。默认构造函数在反序列化进程中调用。