1. 程式人生 > >對象存儲

對象存儲

tran () span tin cti bject serializa bsp ring

對象 有狀態和行為兩種屬性,行為存在於類中,而狀態存在於單獨的對象中。

讓對象可以被序列化,類必須要實現Serializable:

  Serializable接口被稱為marker或tag類的標記用接口,因為此接口沒有任何方法需要實現的。他的唯一目的就是聲明實現它的類,可以被序列化的。

  如果某個實例變量不能或不應該被序列化,就把他標記為transient(瞬時)的。

  例:

  class Chat implements Serializable{

    transient String currentid;

String usename;

  }

一:將序列化對象寫入文件

  1:創建FileOutputStream

    FileOutputStream fs = new FileOutputStream("store.ser");//如果文件不存在 他會被自動創建

  2:創建ObjectOutputStream

    ObjectOutputStream os = new ObjectOutputStream(fs);

  3:寫入對象

    os.writeObject();

  4:關閉對象流

    os.writeObject(new Object());//寫入實例化的對象

  對象被序列化發生了什麽:

      堆上的對象有狀態-實例變量的值,這些值讓同一個類的不同實例有不同的意義。

      序列化的對象保存了實例變量的值,因此之後可以在堆上帶回一模一樣的實例。

  技術分享

二:解序列化(Deserialization):還原對象

  FileInputStream fs = new FileInputStream = new FileInputStream("store".ser);

  ObjectInputStream os = new ObjectInputSream(fs);

  Object one = os.readObject();

  Object two = os.readObject();

  os.close();

 技術分享

 技術分享

技術分享

對象存儲