Java 序列化中的对象图


对象图包含一组对象,在包含引用对象的另一个对象序列化后,这些对象会自动序列化。任何序列化的并包含对象引用的对象,该对象引用都将由 JVM 序列化。

示例

 实际演示

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class One implements Serializable{
   Two s2 = new Two();
}
class Two implements Serializable{
   Three s3 = new Three();
}
class Three implements Serializable{
   int i = 34;
   int j = 67;
}
public class Demo_Serialize{
   public static void main(String args[]) throws Exception{
      One s1 = new One();
      FileOutputStream my_fos = new FileOutputStream("abc.ser");
      ObjectOutputStream my_oos = new ObjectOutputStream(my_fos);
      my_oos.writeObject(s1);
      my_fos.close();
      my_oos.close();
      FileInputStream my_fis = new FileInputStream("abc.ser");
      ObjectInputStream my_ois = new ObjectInputStream(my_fis);
      One my_obj = (One) my_ois.readObject();
      my_fis.close();
      my_ois.close();
      System.out.println("Value of i after it is serialized is " + my_obj.s2.s3.i);
      System.out.println("Value of j after it is serialized is "+my_obj.s2.s3.j);
   }
}

输出

Value of i after it is serialized is 34
Value of j after it is serialized is 67

有一个名为“One”的类继承自“Serializable”类。这里创建了另一个不同类的实例。同一个类由“Serializable”类继承。又在这个类内创建了一个不同的实例。

另一个类继承了“Serializable”类。这里定义了两个整数,并创建了另一个名为“Demo_Serialize”的类。这里定义了主要函数。定义了第一个类的实例,并创建了 FileOutputStream 和 ObjectOutputStream 的实例。使用这些流写入对象。稍后关闭流。再次执行此操作以序列化数据。相关输出显示在控制台上。

更新日期:2020 年 8 月 17 日

681 次浏览

启动您的 职业

通过完成课程获得认证

开始操作
广告