transient关键字和序列化
transient和序列化
主要作用:被transient
关键字修饰的成员属性变量不会被序列化。
需要序列化的对象类,必须实现序列化接口Java.lang.Serializable
,可以通过instanceof Serializable
来判断。
注意:反序列化后,添加transient
修饰的属性值默认值为null,int类型默认值是0(这也说明了此属性值未被序列化)。
另外,static
修饰符修饰的变量也不会参与序列化,反序列化后static
的值为JVM中保存的值。
transient
不能修饰方法和类。且本地用户自定义的变量默认是不能被transient
关键字修饰的,如果变量是本地用户自定义类变量,需要实现Serializable
。
Java中ObjectOutputStream
完成序列化,ObjectInputStream
反序列化:
ObjectOutputStream.writeObject();
ObjectInputStream.readObject();