可外部化或可序列化?

M S*_*ach 5 java serialization

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

Nat*_*hes 6

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

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

  • @Mohit:编程比性能还要多.如果某件事不是瓶颈,那么优化它就是浪费时间.假设你有一个带有可序列化域对象的集群webapp,必须进入会话,节点与高速网络链接,微优化其序列化可能无法获得回报. (3认同)