Skip to content
进阶

一句话答案

序列化将对象转为字节流用于传输/存储,Java 用 Serializable 接口,生产推荐 JSON 或 Protobuf(跨语言、更高效)。

核心要点

Java序列化: 实现Serializable + serialVersionUID

方案对比:

方案速度体积跨语言
Java原生
JSON
Protobuf是(推荐)
追问与易错

追问方向:

  • serialVersionUID 有什么作用?(版本兼容性校验,不一致反序列化失败)
  • transient 关键字的作用?(标记字段不参与序列化)
  • 为什么推荐 Protobuf/JSON 而非 Java 原生序列化?(跨语言/体积小/安全性)

易错点:

  • ❌ 不声明 serialVersionUID——JVM 自动计算,类修改后反序列化失败
  • ❌ Java 原生序列化存在安全漏洞(反序列化攻击)——生产环境应避免

💡 记忆锚点

序列化就是把活对象冻成字节冰棍(传输/存储),反序列化再解冻复活。Java原生又慢又胖又不跨语言,生产环境用Protobuf(小快跨语言)或JSON(可读性好)。别忘serialVersionUID这张身份证,丢了解冻会认不出。