Java 关键字:transient

2025/04/15

一、背景

Java 序列化机制中的排除标记,用于控制对象的持久化范围,确保敏感数据或临时数据不被保存或传输。

二、作用

序列化过程中,用 transient 标记的字段会被排除在序列化过程之外,反序列化时该字段的值会被设为默认值(对象为 null, int 类型字段为 0)。

三、使用场景

  1. 敏感数据保护:密码、密钥不应被传输

    public class User implements Serializable {
        private String username;
        private transient String password; // 序列化时忽略此字段
    } 
    
  2. 避免保存临时状态:例如缓存数据或中间计算结果

    public class DataProcessor implements Serializable {
        private int rawData;
        private transient int cachedResult; // 无需保存临时结果
    } 
    

四、字段添加了 transient 和不加的对比