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