zoukankan      html  css  js  c++  java
  • 085-什么是序列化,序列化有什么作用?如何实现了序列化?

    序列化有什么作用?
      序列化可以将java装换成字节数组,用于对象之间的传输。

    如何实现了序列化?
      java中有一个Serializable接口,这个接口是在java.io包下,只要实现了这个接口的类,都可以实现序列化。

    如何将一个对象序列化?

           //1)先建立流通道,这里使用的是ObjectOutputStream
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:/下载/obj.txt"));
    
            //2)对象序列化,就是把对象保存到文件中,我们的obj.txt中存放的是16进制的字节数据,就相当于是class
            Student p1 = new Student("lisi", 23);
            oos.writeObject(p1);
    
            //3)关闭流
            oos.close();    

    如何将一个序列化的对象转换成对象?

          ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/下载/obj.txt"));
    
            //读取文件中的对象
            //readObject()方法的返回值类型是Object类型,读取文件中的Persn对象之后 , Object类定义的obj变量,实际引用的Person对象
            Object obj = ois.readObject();
            ois.close();
    
            //直接打印obj,会调用obj引用的Person对象的toString()
            System.out.println(obj);

    为什么一个对象实现Serializable接口之后就可以实现序列化了呢?
      我猜测当一个对象事项Serializable接口之后,肯定就会得到一个相应的序列化方法,然后我们的对象调用这个序列化的方法就可以实现序列化了。

      但是这怎么可能呢?我们只是实现了Serializable接口,但是我们并没有手动实现Serializable接口的方法啊?

      这主要是由于Serializable是一个空接口,它根本没有任何方法,他只是起到了一个标识的作用。

    如何使用序列化号起到了什么作用?

      可以将序列化后的文件转换成对象,要是没有这个序列化号,会报一个异常:invalidClassExcepliton(无效的类)
    造成的原因就是假使没有手动加载序列化号,则类的每次加载都会被虚拟机随即创建一个序列化号。

    如何是IDEA自动添加序列化号?

  • 相关阅读:
    【ABAP】
    【Ebs】-日记账导入优化
    【EBS】-日记账审批相关知识点
    【LINUX】cron知识小结
    【Oracle】物化视图相关SQL
    【Ebs】EBS12.2.7 REST ISG的配置
    【Oracle】Windows上Oracle数据库的安装
    【EBS】菜单的复制脚本
    《我们内心的冲突》(卡伦•霍尼)读书笔记
    魔方攻略
  • 原文地址:https://www.cnblogs.com/pogusanqian/p/12712325.html
Copyright © 2011-2022 走看看