Java静态变量能够被序列化吗?
静态变量能够被序列化吗?
我们先定义⼀个类,定义⼀个静态变量 staticVar = 5,将它被序列化后,再把 staticVar 设置成10,最后反序列化后得出的对象的staticVar 是5还是10呢?
代码如下:
public class StaticSerializableTest implements Serializable {
public static int staticVar =5;
@Override
public String toString(){
return" staticVar = "+ staticVar;
}
public static void main(String[] args)throws IOException, ClassNotFoundException {
StaticSerializableTest test =new StaticSerializableTest();
serializeStaticSerializableTest(test);
// 修改为10
StaticSerializableTest.staticVar =10;
StaticSerializableTest test2 =deserializeStaticSerializableTest();
static修饰的变量System.out.println(test2);
}
public static void serializeStaticSerializableTest(StaticSerializableTest t)throws IOException {
ObjectOutputStream oo =new ObjectOutputStream(new FileOutputStream("d://"));
oo.writeObject(t);
System.out.println("StaticSerializableTest 序列化成功");
oo.close();
}
public static StaticSerializableTest deserializeStaticSerializableTest()throws IOException, ClassNotFoundException {
ObjectInputStream ois =new ObjectInputStream(new FileInputStream("d://"));
return(StaticSerializableTest) adObject();
}
}
得到的结果时: staticVar = 10;
为什么会等于10呢?
之所以打印10 , 是因为 在序列化的时候,并不保存静态变量,因为序列化保存的是对象状态,⽽static变量时属于类的状态,因此序列化并不保存静态变量。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。