反序列化中的静态变量?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反序列化中的静态变量?相关的知识,希望对你有一定的参考价值。
我从各种文档和书籍中学习,但我不明白,如果静态变量不参与序列化,它是如何在反序列化中加载的。我做了以下计划: (提前致谢)。
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. - Diceria冷。
您将观察到Test.b
仍然具有值Y
,如果Test.b
已被序列化和反序列化,它将不具有该值。
以上是关于反序列化中的静态变量?的主要内容,如果未能解决你的问题,请参考以下文章
PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结