可外部化或可序列化?

在浏览了http://geekexplains.blogspot.com/2008/06/diff-between-externalizable-and.html上的文章后,我知道Externalizable比Serializalable更好,因为它提供了更好的代码控制,也更快。所以Externalizable应该是preizable而不是Serializable,前提是类定义没有改变。但是当我在任何项目中看到时,我发现只使用Serializable接口。 它是无知还是Serializalable提供了一些我缺少的其他优势?

Serializable的优点是它非常容易实现,并且可以灵活地进行更改(在大多数情况下,您只需要更新serialversionUID)。 Externalizable要求程序员实际工作,并且每次类的内容发生变化时都要做更多的工作。 正如您链接的文章指出实现Externalizable也容易出错。 因此,从利用有限程序员时间的角度来看,Serializable通常是更好的选择。

关于如何设计Serializable和Externalizable的好处是,您可以推迟实施Externalizable的决定,直到明显存在性能问题,并且您可以选择性地仅针对存在问题的类实现它。

Serializable是一个标记接口,指示可以将实例写入输出流并进行回读。 您不必编写和编写代码(您只需确保所有字段都是Serializable )。

Externalizable是一个Serializable ,它提供自定义(反)序列化代码。

我知道Externalizable比Serializalable更好

那个链接并没有这么说。 在这种情况下没有“更好”,它是马匹的课程。 如果您准备在项目的整个生命周期内不断编写更多代码,则Externalizable在某些意义上可能“更好”,例如空间和时间成本。 如果代码的成本是一个问题,Serializable是一个很好的“更好”。 而这些并不是唯一的选择。