简单认识--序列化java.io.Serializable

简单来说,就是像Hibernate那样,直接可以以对象的形式读和写到一个文件上进行保存对象,主要通过writeObject,readObject两个方法。
  
通过 一个简单的例子来认识 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。串行化的主要任务是写出对象实例变量的值。如果变量是另一个对象
 *  的引用,则引用的对象也要串行化,这是个递归过程。
*/

(转自) http://www.cnblogs.com/eflylab/archive/2007/01/19/625050.html

你可能感兴趣的:(java,C++,c,Hibernate,C#)