什么是序列化

2年前 (2022) 程序员胖胖胖虎阿
433 0 0

目录

前言

一、 什么是序列化

二、java如何进行序列化

1.

2.读入数据


前言

就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。


提示:以下是本篇文章正文内容,下面案例可供参考

一、 什么是序列化

就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

我们将对象写入到本地文件的时候 报错:    java.io.NotSerializableException:com.aaa.day06.test.People
没有序列化异常
    
序列化: 将 java对象信息 转换成 二进制数据流的过程
反序列化: 将 二进制数据流 转换成 java对象信息的过程
    
IO操作的时候 操作的就是数据流,也就是说:进行读写的内容 必须以流的形式进行读写。此时我们的People对象 不能进行序列化 就说明不能转换成数据流 ,就不能进行IO读写。

二、java如何进行序列化

1.

序列化操作是一个非常复杂的算法操作,所以 java 官方给我们写好了。
但是使用的方式很特殊, java底层写好了序列化操作,但是官方并不确定 你的对象 是否需要 序列化操作。
此时官方玩了一手 接口标记 操作:
    如果你的对象 需要底层的序列化操作 你的对象 就实现一个接口
    public class People implements Serializable {}
    如果你的对象 不需要底层的序列化操作 就不需要实现这个接口
        
 此处就体现了接口的一个应用场景:  添加标记
我们查看源代码发现:
    public interface Serializable {}

序列化接口里面啥都没有,因为其存在的意义就是为了 添加标记

2.读入数据

代码如下(示例):

java.io.InvalidClassException: com.aaa.day06.test.People; local class incompatible: stream classdesc serialVersionUID = -6756687719523839819, local class serialVersionUID = 873305606511316975

存的时候版本 和取的时候不一样 就会报错。   
所以 我们一开始就要给其设定版本

public class People implements Serializable {


    private static final long serialVersionUID = 666L;

      String   name;
      int      level;
      double   money;

    public People(String name, int level, double money) {
        this.name = name;
        this.level = level;
        this.money = money;
    }

}

 


版权声明:程序员胖胖胖虎阿 发表于 2022年11月25日 上午10:00。
转载请注明:什么是序列化 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...