序列化 java.io.Serializable

來源:互聯網
上載者:User

通過 一個簡單的例子來認識 Serializable

package tt;

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

class ObjectYouWannaSave implements Serializable
{   
    private static final long serialVersionUID = 3224332633725166982L;
    //所有實現Serializable介面的類都需要增加 serialVersionUID
    int   x;
    int   y;     
    SubObject   so   =   new   SubObject();        
}

class SubObject implements Serializable
{
    private static final long serialVersionUID = 4224332633725166867L;
    String   s   =   "abc";   //String   is   OK,   because   String   is   java.io.Serializable   
}

class Save
{   //   in   Save.java   
    public void  main(String[] args)  
    {   
      ObjectYouWannaSave   original   =   new   ObjectYouWannaSave();   
      original.x = -1;   
      original.y = 100;                
      ObjectOutputStream   out   =   null;   
      try
      {                       
          out   =   new   ObjectOutputStream(new   FileOutputStream(new   File("c:/save.dat")));   
          out.writeObject(original);  //將 對象寫入持久
      }
      catch(Exception e)
      {  
        System.out.println("將執行個體寫入檔案出錯:"+e.toString());
      }
      finally
     {   
          try{out.close();}catch(Exception   e){}   
     }
   }   
}
class Read
{   //   in   Read.java   
    public void main(String[] args)
    {
       ObjectInputStream   in   =   null;   
       try{   
           in = new ObjectInputStream(new FileInputStream(new  File("c:/save.dat")));   
           ObjectYouWannaSave   o   =   (ObjectYouWannaSave)in.readObject();   
           System.out.println("x="+o.x);
           System.out.println("y="+o.y);
           System.out.println("subobject.string=" + o.so.s);   
          }catch(Exception e){   
          }finally{   
              try{in.close();}catch(Exception e){}   
          }   
    }   

public class TT
{

    /** *//**
     * 程式入口
     * 2007-01-19 19:43
     */
    public static void main(String[] args) {
    
    //    Save ss = new Save();
    //    ss.main(args);
        Read rr = new Read();
        rr.main(args);//  這是個最簡單的例子,先運行Save,以後什麼時候運行Read都可以(只要c:\save.dat檔案還存在就可以了)  
    }
}
/** *//**
 *     對象的壽命通常隨著產生該對象的程式終止而終止,有時候,可能需要將對象的狀態儲存下來,
 *  在需要的時候再將對象恢複,我們把對象的這種記錄自己狀態的以便將來再生的能力,叫做對象
 *  的持久性(PERSISTENCE),對象通過寫出描述自己狀態的數值來記錄自己,這個過程叫對象
 *  的序列化Serializable。序列化的主要任務是寫出對象執行個體變數的值。如果變數是另一個對象
 *  的引用,則引用的對象也要序列化,這是個遞迴過程。
*/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.