This question already has answers here:
why we have Externalizable when we can override writeObject and readObject in java
(3个答案)
上个月关闭。
我从this发布中了解到
可序列化非常容易实现,并且可以灵活地进行更改(在大多数情况下,您要做的就是更新serialversionUID)。如果我们想控制读写过程,我们可以实现Externalizable。
如果我们只需要控制读写过程,就可以覆盖以下方法进行序列化,对吗?为什么我们需要引入新的接口(interface)Externalizable?
(3个答案)
上个月关闭。
我从this发布中了解到
可序列化非常容易实现,并且可以灵活地进行更改(在大多数情况下,您要做的就是更新serialversionUID)。如果我们想控制读写过程,我们可以实现Externalizable。
如果我们只需要控制读写过程,就可以覆盖以下方法进行序列化,对吗?为什么我们需要引入新的接口(interface)Externalizable?
private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException;
private void readObjectNoData()
throws ObjectStreamException;
最佳答案
你问:
我已经找到的最佳理由(在Oracle文档中)在WebLogic JMS Best Practice文档(original link)中:
简而言之,至少在某些情况下,可以使用Externalizable
获得更好的性能。
而且“区别”在于,如果您使用Serializable
,则通常会为您完成序列化工作,但是使用Externalizable
,您需要自己对其进行编码。
10-04 18:44