zoukankan      html  css  js  c++  java
  • 序列化和反序列化

    序列化和反序列化

    1. 什么是序列化和反序列化

    序列化 Serialization  将对象的状态信息转换为可以存储或传输的形式的过程。对象(内存)------->字节数组  字节序列(外存、网络)

    反序列化:DeSerialization  

    字节数组  字节序列(外存、网络)----------->对象(内存)

      

    1. 什么时候需要序列化和反序列化

      存储或传输 比如存储到外存(硬盘)中   传输到网络

    1. 如何实现序列化和反序列化

      相应的类要实现Serializable接口 

     public class Student implements Serializable {

    }

    ObjectOutputStream oos = new ObjectOutputStream(bos);

    oos.writeObject(new Student(1, "111", 22, 333.3));

    ObjectInputStream ois = new ObjectInputStream(bis);

    Student stu = (Student)ois.readObject();

    1. 序列化的细节
    • 为什么序列化接口没有任何方法,哪还有什么用

     (查看ObjectOutputStream源码)

    • static属性不参与序列化
    • 如果不希望某个属性参与序列化,要使用transient修饰
    • Exception in thread "main" java.io.InvalidClassException:

    com.bjsxt.entity.Student; local class incompatible:

    stream classdesc serialVersionUID = 5954363181006202290,

    local class serialVersionUID = -1877375566195009060  

    解决方案:给出一个固定的序列化版本号

    • 使用对象流把一个对象写到文件时不仅保证该对象是序列化的,而且该对象的成员对象也必须是可序列化的。
  • 相关阅读:
    小Z的袜子
    C#操作XML
    C#中接口的实现方法
    C#邮箱批量注册
    C# 委托的使用
    C# socket
    在C#.net中如何操作XML
    C#接口的基础知识
    C#判断网页中是否含有某字符串
    C#多线程处理多个队列的数据
  • 原文地址:https://www.cnblogs.com/vincentmax/p/14245767.html
Copyright © 2011-2022 走看看