zoukankan      html  css  js  c++  java
  • Java 序列化Serializable

    a)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;

    b)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;

    c) static,transient后的变量不能被序列化;

    2、什么情况下需要序列化 
    a)当你想把的内存中的对象保存到一个文件中或者数据库中时候;
    b)当你想用套接字在网络上传送对象的时候;
    c)当你想通过RMI传输对象的时候;

    如果我们想要序列化一个对象,首先要创建某些OutputStream(如FileOutputStream、ByteArrayOutputStream等),然后将这些OutputStream封装在一个ObjectOutputStream中。这时候,只需要调用writeObject()方法就可以将对象序列化,并将其发送给OutputStream记住:对象的序列化是基于字节的,不能使用Reader和Writer等基于字符的层次结构。而反序列的过程(即将一个序列还原成为一个对象),需要将一个InputStream(如FileInputstream、ByteArrayInputStream等)封装在ObjectInputStream内,然后调用readObject()即可。

    序列化:

    MyTest类需要implements Serializable

    ObjectOutputStream oos = new ObjectOutputStream(newFileOutputStream("my.out"));//ObjectOutputStream能把Object输出成Byte流
                MyTest myTest=new MyTest();
                oos.writeObject(myTest);
                oos.flush();  //缓冲流
                oos.close(); //关闭流

    反序列化:

      ObjectInputStream oin = null;//局部变量必须要初始化
            try
            {
                oin = new ObjectInputStream(new FileInputStream("my.out"));
            catch (FileNotFoundException e1)
            {       
                e1.printStackTrace();
            catch (IOException e1)
            {
                e1.printStackTrace();
            }     
            MyTest mts = null;
            try {
                mts = (MyTest ) oin.readObject();//由Object对象向下转型为MyTest对象
  • 相关阅读:
    嗨!亲爱的朋友们,欢迎您光临我的BLOG
    SQL里的各种语句语法
    2000/XP登陆后自动注销解决办法(WORM_FUNNER.A)
    ASP程序加密解密方法全面解析
    双击硬盘盘符打不开文件的处理方法
    关于rs.Open sql,conn语句
    C# 图片被占用资源无法删除或者修改,转换成数据流解决
    asp.net div 使用
    鼠标移到控件上显示,移出控件消失
    C# 文件关联 (jpg等图片格式为例)
  • 原文地址:https://www.cnblogs.com/yingchen/p/5196151.html
Copyright © 2011-2022 走看看