首页 > 其他 > 详细

序列化

时间:2019-04-24 10:16:16      阅读:182      评论:0      收藏:0      [点我收藏+]

Serializable

一、基础序列化

在网络传输过程中,需要将对象进行序列化后才能进行传输,序列化就是按照一定的标准进行转码的过程。在序列化与反序列化过程中对serialVersionUID 属性进行维护,相当于转码的标准。一般有两种方法,一是指定值,二是默认由系统根据字段,方法等,计算得到此属性。

需要注意的有两点:

1.transient关键字修饰的属性,不进行序列化。
2.static关键字修饰的属性,不进行序列化。
被声明为static的属性不会被序列化,这个问题可以这么理解,序列化保存的是对象的状态,但是static修饰的变量是属于类的而不是属于变量的,因此序列化的时候不会序列化它

二、自行实现序列化

java默认的序列化方法有安全问题,所以在有些敏感信息需要自行序列化。

具体的需要自己写writeObject和readObject 方法。

三、复杂序列化情况(易出bug)

1、当父类继承Serializable接口时,所有子类都可以被序列化

2、子类实现了Serializable接口,父类没有,父类中的属性不能序列化(不报错,数据丢失),但是在子类中属性仍能正确序列化

3、如果序列化的属性是对象,则这个对象也必须实现Serializable接口,否则会报错

4、反序列化时,如果对象的属性有修改或删减,则修改的部分属性会丢失,但不会报错

5、反序列化时,如果serialVersionUID被修改,则反序列化时会失败

参考:https://www.cnblogs.com/szlbm/p/5504166.html

序列化

原文:https://www.cnblogs.com/Junpb/p/10760565.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!