• Java连载102-对象类文件的序列化与反序列化


    一、对象类文件的序列换与反序列化

    1.java.io.ObjectOutputStream;序列化JAVA对象到硬盘

    2.java.io.ObjectInputStream;将硬盘中的数据“反序列化”到JVM内存中

    Compile编译(java->class)

    DeCompile反编译(class->java)

    3.标识性接口的作用:

    JVM如果检查到该对象实现了某个标识接口,会对它进行特殊待遇

    如下代码中的User102实现的接口Serializable

    疑问:User102实现Serializable接口,JVM会对它的特殊待遇是什么?

    package com.bjpowernode.java_learning;
    
    import java.io.*;
    
    import java.io.Serializable;
    
    ​
    
    public class D102_1_ObjectOutputStream {
    
      public static void main(String[] args) throws IOException,ClassNotFoundException{
    
        //1.创建java对象
    
        User102 u1 = new User102("彭于晏");
    
       
    
        //2.创建输出流(序列化流)(JVM中的对象状态保存到硬盘中)
    
        String address = "C:\\Users\\lenovo1\\Workspaces\\MyEclipse CI\\Java_learning\\src\\com\\bjpowernode\\java_learning\\temp1.txt";
    
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(address));
    
       
    
        //3.写入
    
        oos.writeObject(u1);//写进去的不是几个文字,而是一个字符串对象
    
       
    
        //4.刷新
    
        oos.flush();
    
        //5.关闭
    
        oos.close();
    
       
    
        //接下来我们需要把序列化的对象给读出来,也就是反序列化
    
        //6.创建反序列化流
    
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(address));
    
        //7.反序列化
    
        Object o = ois.readObject();
    
        System.out.println(o);
    
        //关闭
    
        ois.close();
    
      }
    
    }
    
    class User102 implements Serializable{//该接口是一个可序列化的,该接口没有任何方法,该接口是一个
    
      //标志性的接口,像这样的接口还有java.util.Cloneable
    
      String name;
    
      User102(String name){
    
        this.name=name;
    
      }
    
      public String toString() {
    
        return "User[name="+name+"]";
    
      }
    
    }

    二、源码:

    D102_1_ObjectOutputStream.java

    https://github.com/ruigege66/Java/blob/master/D102_1_ObjectOutputStream.java​

    2.CSDN:https://blog.csdn.net/weixin_44630050

    3.博客园:https://www.cnblogs.com/ruigege0000/

    4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

     

  • 相关阅读:
    LOTUS还能活多久
    关于Domino的DIIOP服务 (转)
    Domino Servlet示例
    Limits on numeric data representation in LotusScript
    用webdav实现从DominoOA到Exchange的日程同步.
    Limits on array variables in LotusScript
    Table of Notes and Domino known limits
    IBM / Lotus Domino 与 WebSphere Portal: 单点登录(转)
    某个domino的word公文本地编辑实现方案
    Domino中部署Servlet
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/12563374.html
Copyright © 2020-2023  润新知