java对象序列化与反序列化中的构造方法问题

来源:互联网 发布:淘宝开店最新流程ppt 编辑:程序博客网 时间:2024/06/07 21:09
老规矩,先上代码再总结:
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class main {public static void main(String[] args)throws IOException, ClassNotFoundException{ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("employee.dat"));Foo2 foo2=new Foo2();oos.writeObject(foo2);oos.flush();oos.close();ObjectInputStream ois=new ObjectInputStream(new FileInputStream("employee.dat"));Foo2 foo21= (Foo2)ois.readObject();System.out.println(foo21);ois.close();}}class Foo {public Foo(){System.out.println("foo...");}}class Foo1 extends Foo implements Serializable{public Foo1(){System.out.println("foo1...");}}class Foo2 extends Foo1{public Foo2(){System.out.println("foo2...");}}

天啦噜,这段代码好长好长。

怎么说呢?大家先看看运行结果吧:

通过上面的内容,我们可以总结出java对象序列化与非序列化时子父类构造方法的调用法则:

1.在序列化过程中,构造可序列化的子类对象时总要递归调父类的构造方法;

2.在反序列化过程中,构造子类对象时总是只显示调用(该子类及其不可序列化父类)的构造方法;

注意这里的括号,明白我的意思吧,我这人嘴笨,可能解释不清楚,大家见谅。


0 0