序列化:把内存中的Java对象转成二进制字节流,这样才能存到硬盘或者通过网络发给别的机器。
反序列化:把字节流还原成Java对象。
实现细节:
- 类必须实现
Serializable接口,是许可证,没有JDK序列化机制不允许序列化 - 敏感字段比如密码,加个
transient关键字,序列化时自动跳过 - 显示定义
serialVersionUID,相当于给类打个版本戳,防止该了类结构后反序列化旧数据时报错。
示例代码:
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private String username;
private transient String password; // 不参与序列化
private int age;
}
静态变量不参与序列化
序列化存的是对象的状态,静态变量属于类,所以不会被序列化。反序列化后静态变量的值取决于当前JVM这个类的静态变量是什么值,跟序列化时的值没关系
评论已关闭