为什么实现Externalizable需要一个默认的公共构造函数?

shr*_*000 10 java serialization

如果我们实现Serializable,我们不需要它.为什么这个差异呢?它与序列化的实际机制有什么关系?

jst*_*rek 6

可以在http://www.jusfortechies.com/java/core-java/externalization.php上找到详尽的解释(虽然可能会改进文章的语法).简短的回答,以供将来参考,以防链接页面消失:

Externalizable是一个扩展Serializable的接口.但是,与Serializable相反,只是读取序列化的字节流不会恢复对象,但会调用公共构造函数,只有在创建了对象后,才会恢复其状态.这使得恢复更有效.

编辑:另请参阅Java中的Serializable和Externalizable有什么区别?.

  • 这个答案只是重复了这个困扰我们的事实.这怎么可能是答案?问题是为什么青蛙是绿色的,而所有其他爬行动物都是灰色的?你说青蛙是绿色的,爬行动物是灰色的.这怎么可能是答案?我想重新提出这个问题. (2认同)