一个类只要实现 Serializable 接口,这个类的对象就可以被序列化,这种序列化模式为开发者提供了很多便利,我们可以不必关心具体序列化的过程,只要这个类实现了 Serializable 接口,这个类的所有属性都会自动序列化。
但是有时我们需要让类的某些属性不被序列化,如密码这类信息,为了安全起见,不希望在网络操作中被传输或者持久化到本地。只要在相应的属性前加上 transient 关键字,就可以实现部分属性不被序列。
transient 关键字只能修饰变量,而不能修饰局部变量、方法和类。
静态变量不管是否被 transient 修饰,均不能被序列化(如果反序列化后还有值,则值为当前 JVM 中对应 static 变量的值)。序列化保存的是对象状态,静态变量保存的是类状态,因此序列化并不保存静态变量。
代码示例
private transient String password = "feige";