反序列化中的静态变量?

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;
        }
    }
答案

你的测试没有任何证据。

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

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

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

以上是关于反序列化中的静态变量?的主要内容,如果未能解决你的问题,请参考以下文章

Java中的序列化和反序列化

JAVA中序列化和反序列化中的静态成员问题

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

java基础-类和对象详解

Java 中关键字transient引出序列化与反序列化

PHP反序列化一个JS序列化的变量字符串[重复]