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和不加的对比