摘要:目的在于,传送对象的状态,也就是属性值反序列化后的对象还可以保存到硬盘上。实现接口,并增加与这个方法来自定义某些属性的序列化。在序列化和反序列化的过程中自定义序列化,我们还可以根据版本号来选择性的序列化那些变化的属性的状态。
序列化Serializable
作用
1.当2个进程在进行远程通信时,相互发送数据,数据都是以二进制的形式传送的。如果我们要传输对象的话,就需要把对象转化为字节数组(二进制数据),接收方接收后反序列成对象。目的在于,传送对象的状态,也就是属性值
2.反序列化后的对象还可以保存到硬盘上。
实现方式
1.实现Serializable接口。
2.实现Serializable接口,并增加void writeObject(ObjectOutputStream out) throws IOException与void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException这2个方法来自定义某些属性的序列化。
3.实现Externalizable接口(该接口继承自Serializable接口),并重写writeExtername与readExternal方法来完全自定义要序列化的属性。
显式定义serialVersionUID属性的作用
1.对于一个要进行序列化的类,我们希望类的不同版本对序列化兼容(这个类可能前前后后对字段进行删改),如果不显式设置id,这个类的每个版本的id(由系统生成)都是不一样的。那么反序列化的时候,永远只能反序列化最新的实例了(旧的实例因为id不一致将失败)。
2.所以要保证兼容的话,就需要设置一个显式的id。那么在序列化旧的实例时,新添加的或更改的字段会被设置为null,删除的字段不设置。
3.如果我们不想兼容不同版本,我们还可以为不同的版本再设置一个版本号。在序列化和反序列化的过程中(自定义序列化),我们还可以根据版本号来选择性的序列化那些变化的属性的状态。
在springmvc里,javabean都要实现Serializable接口,并生成显式id
其目的就是我们上面分析的序列化的作用以及显式id的作用,特别是在远程服务调用的项目中。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/77267.html
摘要:格式术语说明块状结构指的是一个类,方法或构造函数的主体。方法名或构造函数名与左括号留在同一行。空白垂直空白以下情况需要使用一个空行类内连续的成员之间字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块。 前言 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。 与其它的编程风格...
摘要:引言到目前为止,我们已经构建了一个有工作量证明机制的区块链。在今天的内容中,我们会将区块链持久化到一个数据库中,然后会提供一个简单的命令行接口,用来完成一些与区块链的交互操作。这同样也意味着,一个也就是区块链的一种标识符。 翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码...
摘要:学堂码匠本期继续走入算法冒泡排序法。冒泡排序法完整代码冒泡排序法的优化假如序列的数据为使用上面的冒泡排序法进行排序,得到的结果肯定没有问题,但是,待排序的序列是有序的,理论上是无需遍历排序。 HTML5学堂-码匠:本期继续走入算法 —— 冒泡排序法。冒泡排序算法相对简单,容易上手,稳定性也比较高,算是一种较好理解的算法,也是面试官高频提问的算法之一。 Tips:关于算法及排序的基础知识...
摘要:用于把对象序列化字符串,在序列化对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。对第步返回的每个值进行相应的序列化。参考文档高级程序设计作者以乐之名本文原创,有不当的地方欢迎指出。 showImg(https://segmentfault.com/img/bVburW1?w=658&h=494); JSON与JavaScript对象 JSON是一种表示结构化数据的存储格式,语...
阅读 879·2021-10-13 09:39
阅读 3533·2021-09-26 10:16
阅读 2863·2019-08-30 15:54
阅读 1040·2019-08-30 14:22
阅读 2890·2019-08-29 15:39
阅读 3254·2019-08-27 10:52
阅读 811·2019-08-26 13:59
阅读 1705·2019-08-26 12:20