Java 中的 transient 关键字
transient
关键字是一个类成员变量的修饰符,用于标记某个类的字段不参与序列化。当一个对象通过序列化机制,例如 ObjectOutputStream
,保存到文件或传输时, transient
修饰的字段将不会被序列化,也就是说它不会被保存或传输。
用途
- 避免敏感数据被序列化:如果对象中包含敏感数据,比如密码,可以使用
transient
关键字避免这些数据被序列化,以确保安全。 - 非持久化字段:有些字段可能不需要持久化,比如某些仅在内存中使用的缓存数据、计算结果等。这类字段标记为
transient
后,即使对象被序列化,这些字段的值也不会被保存。 - 外部引用:如果对象持有一个对外部资源的引用,比如文件句柄、网络连接等,这些资源通常不适合序列化。将这些成员变量声明为
transient
可以防止尝试序列化这些外部资源。
使用示例
1 | import java.io.Serializable; |
在这个例子中,password
字段被 transient
修饰,意味着当 User
对象序列化时,password
字段的值将不会被保存。
注意事项
在反序列化过程中,
transient
字段会被恢复为其默认值:- 对象类型反序列化为
null
。 - 基础数据类型如
int
为0
,boolean
为false
等等。
- 对象类型反序列化为
transient
修饰静态变量时不起作用
相关链接
OB links
OB tags
#Java
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 z2huo!
评论