• 序列化 java.io.Serializable


    通过 一个简单的例子来认识 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。串行化的主要任务是写出对象实例变量的值。如果变量是另一个对象
     *  的引用,则引用的对象也要串行化,这是个递归过程。
    */
  • 相关阅读:
    Linux Centos7之由Python2升级到Python3教程
    10张图带你深入理解Docker容器和镜像
    Centos7 添加用户及设置权限
    OpenCV 和 Dlib 人脸识别基础
    python unittest 源码学习
    Markdown 模板
    python Django ORM相关
    java的介绍
    java反射
    代理模式
  • 原文地址:https://www.cnblogs.com/eflylab/p/625050.html
Copyright © 2020-2023  润新知