我从各种文档和书籍中学习,但我不明白,如果静态变量不参与序列化,它是如何在反序列化中加载的。我做了以下计划: (提前致谢)。
public class SerializationDemo {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ObjectOutputStream o=new ObjectOutputStream(new FileOutputStream("d:\\test.txt"));
Test ob=new Test();
Test ob1=new Test();
ob1.add();
o.writeObject(ob);//serialize obj
o.flush();
System.out.println("success Written");
//Deserialization
ObjectInputStream in=new ObjectInputStream(new FileInputStream("d:\\test.txt"));
Test a=(Test)in.readObject();
**System.out.println(a.a+" "+a.b);//output :7 9**
}
}
class Test implements Serializable{
int a;
static int b;
public Test(){
a=7;
}
void add(){
b=9;
}
}
你的测试没有任何证据。
如果你想观察它,你需要:
Test.b
设置为某个值X.Test
对象。Test.b
设置为不同的值Y.您将观察到Test.b
仍然具有值Y
,如果Test.b
已被序列化和反序列化,它将不具有该值。