Java序列化版本ID的知识点

来源:互联网 发布:js gmt转换为北京时间 编辑:程序博客网 时间:2024/05/02 19:50

1.为什么要序列化


在网络传输中需要序列化成二进制文件进行传输


在保存对象时候需要序列化成二进制文件进行保存


2.如何实现序列化


实现接口serializable


3.序列化版本ID的作用


在反序列化的时候起作用,拿到二进制文件的id与class文件进行id对比如果不一致,则抛出异常。


4.序列化版本ID生成策略



4.1警告提示,java编译器会根据包名,类名,方法名,属性名,生成一个64位hashcode


4.2  规定类文件为固定id为1L


5.为什么要规定序列化版本ID

如果我们想要在已经序列化后的java文件改变java文件的属性,javac就会重新编译一遍.java文件生成class文件。重新生成一个序列化版本ID,与二进制文件的ID做对比,就会不一致,抛异常。

再回到问题。如果规定了序列化版本ID,第一次编译这个.java文件。生成的id都是固定的,以后怎么修改都是固定的。二进制文件也是这个id,所以反序列化在比较id就永远一致。

总结第5个问题:说白了,就是满足可以随时修改序列化类的属性方法。

原创粉丝点击