transient关键字和序列化

发布时间 2023-09-04 11:56:58作者: 星流残阳

transient和序列化

主要作用:被transient关键字修饰的成员属性变量不会被序列化。

需要序列化的对象类,必须实现序列化接口Java.lang.Serializable,可以通过instanceof Serializable来判断。

注意:反序列化后,添加transient修饰的属性值默认值为null,int类型默认值是0(这也说明了此属性值未被序列化)。

另外,static修饰符修饰的变量也不会参与序列化,反序列化后static的值为JVM中保存的值。

transient不能修饰方法和类。且本地用户自定义的变量默认是不能被transient关键字修饰的,如果变量是本地用户自定义类变量,需要实现Serializable

Java中ObjectOutputStream完成序列化,ObjectInputStream反序列化:

ObjectOutputStream.writeObject();
ObjectInputStream.readObject();