transient
transient是类型修饰符,只能用来修饰字段。在对象序列化的过程中,标记为transient的变量不会被序列化。
序列化和反序列化
一个对象的表示转化为字节流的过程称为序列化(serialization),从字节流中把对象重建出来称为反串行化反序列化(deserialization)。
测试代码
public class TestTransient {
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws IOException, ClassNotFoundException {
A a = new A(25, "测试");
System.out.println(a);
ObjectOutputStream oos =
new ObjectOutputStream(new FileOutputStream("/Users/dev/Desktop/tmp/a.txt"));
oos.writeObject(a);
oos.close();
ObjectInputStream ois =
new ObjectInputStream(new FileInputStream("/Users/dev/Desktop/tmp/a.txt"));
a = (A) ois.readObject();
System.out.println(a);
}
static class A implements Serializable {
int a;
transient String b;
public A(int a, String b) {
this.a = a;
this.b = b;
}
public String toString() {
return "a = " + a + ",b = " + b;
}
}
}
输出结构
a = 25,b = 测试
a = 25,b = null