Java编程中带有继承的对象序列化

序列化是将对象的状态更改为字节流的过程,以便字节流可以返回到对象的副本中

Java中,如果对象的类或父类实现了Serializable接口或Externalizable接口,则称该对象可序列化。

反序列化将序列化的对象转换回该对象的副本。

有继承的对象序列化有三种情况。

  • 如果父类可序列化,则子类可自动序列化

  • 即使父类不可序列化,子类仍可以序列化

  • 如果我们希望子类不被序列化,即使父类是可序列化的

让我们看一个示例,其中父类可序列化时,子类自动变为可序列化-

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.NotSerializableException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;

class Parent implements Serializable {

   int i = 33;

}

class Child extends Parent {

   int j = 21;

}

public class Example {

   public static void main(String[] args) throws IOException, ClassNotFoundException {

      Child writer = new Child();

      FileOutputStream fos = new FileOutputStream("file.txt");

      ObjectOutputStream oos = new ObjectOutputStream(fos);

      oos.writeObject(writer);

      FileInputStream fis = new FileInputStream("file.txt");

      ObjectInputStream ois = new ObjectInputStream(fis);

      Child reader = (Child)ois.readObject();

      System.out.println(reader.i+","+reader.j);

   }

}

输出

33,21

以上是 Java编程中带有继承的对象序列化 的全部内容, 来源链接: utcz.com/z/316353.html

回到顶部