美文网首页
2018-10-07-serialVersionUID

2018-10-07-serialVersionUID

作者: 迪奥炸 | 来源:发表于2018-10-07 16:00 被阅读0次

implements Serializable

serialVersionUID 一个标签

运行时,判断类的serialVersionUID来验证版本的一致性

------>

JVM把传来的字节流中的serialVersionUID本地实体类的serialVersionUID进行对比:

一样,就可以进行反序列化

不一样,出现异常InvalidCastException

生成方式:

1、默认:1L
private static final long  serialVersionUID = 1L; 
2、根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段
private static final   long  serialVersionUID = xxxxL;


为什么要用序列化https://blog.csdn.net/u011215133/article/details/51177843

1、对流化后的对象进行读写操作,

2、也可将流化后的对象传输于网络之间(注:要想将对象传输于网络必须进行流化)!

没有序列化:
对象的引用【B对象中引用了A对象,加载到heap中,创建了B,B.A,A,修改A的时候,还要修改它的引用】

通过序列化优化
1、保存到磁盘的所有对象都获得了一个序列号(1、2、3等等)
2、当要保存一个对象时,要先检查该对象是否被保存
3、如果以前保存过,只需要写入"与已经保存的具有序列号x的对象相同"的标记

对于transient字段序列化机制会跳过不会将其写入文件

又想序列化不可以被序列化的数据字段进行写出和读入操作
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;
private void writeObject(ObjectOutputStream out) throws IOException;
(注:这些方法定义时必须是私有的,因为不需要你显示调用,序列化机制会自动调用的)

相关文章

网友评论

      本文标题:2018-10-07-serialVersionUID

      本文链接:https://www.haomeiwen.com/subject/kmmlaftx.html