反序列化中的静态变量?

问题描述 投票:0回答:1

我从各种文档和书籍中学习,但我不明白,如果静态变量不参与序列化,它是如何在反序列化中加载的。我做了以下计划: (提前致谢)。

 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;
        }
    }
java variables serialization static deserialization
1个回答
0
投票

你的测试没有任何证据。

如果你想观察它,你需要:

  1. Test.b设置为某个值X.
  2. 序列化Test对象。
  3. Test.b设置为不同的值Y.
  4. Diceria冷。

您将观察到Test.b仍然具有值Y,如果Test.b已被序列化和反序列化,它将不具有该值。

© www.soinside.com 2019 - 2024. All rights reserved.