Serialize a hierarchy : Serialization « File « SCJP






import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class MainClass {
  public static void main(String[] args) {
    Collar c = new Collar(3);
    Dog d = new Dog(c, 5);
    System.out.println("before: collar size is "
        + d.getCollar().getCollarSize());
    try {
      FileOutputStream fs = new FileOutputStream("testSer.ser");
      ObjectOutputStream os = new ObjectOutputStream(fs);
      os.writeObject(d);
      os.close();
    } catch (Exception e) {
      e.printStackTrace();
    }

    try {
      FileInputStream fis = new FileInputStream("testSer.ser");
      ObjectInputStream ois = new ObjectInputStream(fis);
      d = (Dog) ois.readObject();
      ois.close();
    } catch (Exception e) {
      e.printStackTrace();
    }

    System.out.println("after:  collar size is "
        + d.getCollar().getCollarSize());
  }
}

class Dog implements Serializable {
  private Collar theCollar;
  private int dogSize;

  public Dog(Collar collar, int size) {
    theCollar = collar;
    dogSize = size;
  }

  public Collar getCollar() {
    return theCollar;
  }
}

class Collar implements Serializable {
  private int collarSize;

  public Collar(int size) {
    collarSize = size;
  }

  public int getCollarSize() {
    return collarSize;
  }
}
before: collar size is 3
after:  collar size is 3








9.5.Serialization
9.5.1.Object Serialization
9.5.2.Object Streams and Serialization
9.5.3.Wirte your own serialization code
9.5.4.Working with ObjectOutputStream and ObjectInputStream
9.5.5.Serialize a hierarchy
9.5.6.Using writeObject and readObject
9.5.7.Which variables will and will not be restored with the appropriate values when an object is deserialized