1. Externalizable 与 Serializable 的差异
Externalizable 与 Serializable 的差异是什么?各自如何选择?
- Externalizable 与 Serializable 接口
- 序列化机制差异
- 性能与灵活度
Serializable 是标记接口,序列化机制由 JVM 自动完成(反射遍历字段),开发者可自定义 writeObject/readObject 控制,但默认会序列化所有非 transient 字段;实现简单但性能较差(反射开销、元数据完整)。Externalizable 接口定义 writeExternal/readExternal 两个方法,开发者需完全手动实现序列化逻辑,只序列化需要字段,性能更好、更可控,但需要开发者手动管理所有字段。差异:Serializable 自动、反射、字段完整、实现简单;Externalizable 手动、精确、性能好、灵活。选择:简单对象用 Serializable;需要高性能、精确控制(如只序列化部分字段、定制格式)用 Externalizable。理解两者差异(自动 vs 手动、性能与控制)是本题关键。
核心是 Serializable 自动反射序列化、Externalizable 手动精确控制,性能与灵活度不同。理解差异与选择是本题关键。