简而言之:序列化,就是为了在不同时间或不同平台的JVM之间共享实例对象。即序列化出于两个原因:①、用于持久化到磁盘上;②、用于作为数据流在网络上传输。

  所谓的Serializable,就是java提供的通用数据保存和读取的接口。至于从什么地方读出来和保存到哪里去,都被隐藏在函数参数的背后了。这样,任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。这样极大的简化了类的设计。只要设计一个保存一个读取功能就能解决上面说的所有问题。

java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了。

工作流当中流程变量的几种数据类型:string integer short long double boolean date binary serializable,这就是为什么要将JAVA bean实现序列化的原因,因为你将对象设置到流程变量中必须要实现序列化,否则会在设置流程变量的时候报错找不到该类型。

java对象序列化机制就是把内存中的Java对象(User之类的JavaBean)转换成二进制流。java对象序列化后可以很方便的存储或者在网络中传输。Java的序列化机制是通过运行时判断类的序列化ID(serialVersionUID)来判定版本的一致性。在反序列化时,java虚拟机会通过二进制流中的serialVersionUID与本地的对应的实体类进行比较,如果相同就认为是一致的,可以进行反序列化,正确获得信息,否则抛出序列化版本不一致的异常。所以涉及到数据传输或者存储的类,严格意义上来说都要加上序列化ID,这也是一种良好的编程习惯。

注:

  1、在序列化对象时,不仅会序列化当前对象本身,还会对该对象引用的其它对象也进行序列化,如此引用传递序列化。如果一个对象包含的成员变量是容器类等并深层引用,那么序列化过程开销也较大。

  2、当字段被声明为 transient 后,默认序列化机制就会忽略该字段。(还有方法就是自定义writeObject方法,见下代码示例)

  3、在单例类中添加一个readResolve()方法(直接返回单例对象),以保证在序列化过程仍保持单例特性。

最新文章

  1. Finder Item脚本如何包装成 Mac App
  2. iOS:xCode7版本运行xCode8.0的代码
  3. Linux磁盘管理之创建磁盘分区05
  4. codevs1958 刺激
  5. [转]Eclipse工具使用技巧总结
  6. python 常用数据结构使用
  7. 【每天一道算法题】Numeric Keypad
  8. R语法学习 第十二篇:因子
  9. 可持久化线段树——区间更新hdu4348
  10. android dialog设置全屏半透明背景色
  11. Eclipse4.8.0的svn插件离线安装说明
  12. Matplotlib学习---用mplot3d画莫比乌斯环(Mobius strip)
  13. Kindeditor视频上传问题处理
  14. Vuex之理解Getters的用法
  15. 24. Swap Nodes in Pairs 链表每2个点翻转一次
  16. Activity回传值报错:Failure delivering result ResultInfo{who=null,request=7,result = 0,data=null}
  17. HTML5 FileReader实现图片上传前预览
  18. 样条之拉格朗日Lagrange(一元全区间)插值函数
  19. java ssm 后台框架平台 项目源码 websocket即时聊天发图片文字 好友群组 SSM源码
  20. FILTER:progid:DXImageTransform.Microsoft.Gradient使用

热门文章

  1. JavaScript校验身份证,包含省份、长度、出生年月日、校验位的检测、性别、年龄
  2. nRF5 SDK Bootloader and DFU moudles(1)
  3. 部署kubernetes-prometheus和用kubespray部署kubernetes后修改kubelet的
  4. MySQL_数据表命令
  5. linux-32bit-内存管理
  6. fastadmin model关联模型 关联查询问题
  7. 【Python】if __name__ == '__main__' 含义解析
  8. WijmoJS V2019.0 Update2发布:再度增强 React 和 Vue 框架的组件功能
  9. 理解twisted中的reactor和deferred(二)
  10. JavaScript-checkbox标签-隐藏、显示、全选、取消和反选等操作