您的位置 首页 java

Java 静态变量能够被序列化吗?

静态变量能够被序列化吗?
我们先定义一个类,定义一个静态变量 staticVar = 5,将它被序列化后,再把 Static Var 设置成10,最后反序列化后得出的对象的staticVar 是5还是10呢?

代码如下:

 public class StaticSerializableTest implements Serializable {
    public static int  static Var = 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();
        System.out.println(test2);
    }
    public static void serializeStaticSerializableTest(StaticSerializableTest t) throws IOException {
        ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream("d://static.txt"));
        oo.writeObject(t);
        System.out.println("StaticSerializableTest 序列化 成功");
        oo.close();
    }
    public static StaticSerializableTest deserializeStaticSerializableTest() throws IOException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d://static.txt"));
        return  (StaticSerializableTest) ois.readObject();
    }
}
  

得到的结果时: staticVar = 10;
为什么会等于10呢?

之所以打印10 , 是因为 在 序列化 的时候,并不保存静态变量,因为序列化保存的是对象状态,而static变量时属于类的状态,因此 序列化并不保存静态变量

文章来源:智云一二三科技

文章标题:Java 静态变量能够被序列化吗?

文章地址:https://www.zhihuclub.com/182843.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图