黑马程序员技术交流社区

标题: 【广州校区】【原创】Java序列化 [打印本页]

作者: 帅气de路人甲    时间: 2019-10-10 13:59
标题: 【广州校区】【原创】Java序列化
1、什么是序列化:
    序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化
    序列化后可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间

2、序列化与反序列化:
  序列化  : 把Java对象转换为字节序列的过程
  反序列化 : 把字节序列恢复为Java对象的过程

3、序列化目的及用途:
    目的:
        序列化是为了解决在对对象流进行读写操作时所引发的问题
    用途:
       a. 把对象的字节序列永久地保存到硬盘上
       b. 在网络上传送对象的字节序列

4、如何实现序列化:
    实现序列化有两种方式
        a. 将被序列化的类实现Serializable接口
        注意:
           Serializable接口没有需要实现的方法,
           实现Serializable接口只是为了标注该对象是可被序列化的,然后使用一个 输出流 来构造一个 对象流(ObjectOutputStream) 对象,
           然后使用 对象流 对象的 writeObject(Object obj) 方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流

        b. 实现接口Externalizable

5、实现Java的序列化注意事项:
     a. Java的序列化时,transient变量和静态变量不会被序列化

     b. 如果先序列化对象A后序列化B,那么在反序列化的时候一定记着JAVA规定先读到的对象是先被序列化的对象,不要先接收对象B,
        因为那样会报错,尤其在使用Externalizable的时候一定要注意读取的先后顺序

     c. 实现序列化接口的对象并不强制声明唯一的serialVersionUID,
        但是是否声明serialVersionUID对于对象序列化的向上向下的兼容性有很大的影响






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2