1.java中的序列化时transient变量(这个关键字的作用就是告知JAVA我不可以被序列化)和静态变量不会被序列          化(下面是一个测试的例子)

(实体带versionUUID,便于反序列化时不会报错。)

2.也是最应该注意的,如果你先序列化对象A后序列化B,那么在反序列化的时候一定记着JAVA规定先读到的对象               是先被序列化的对象,不要先接收对象B,那样会报错.尤其在使用上面的Externalizable的时候一定要注意读取               的先后顺序。

3.实现序列化接口的对象并不强制声明唯一的serialVersionUID,是否声明serialVersionUID对于对象序列化的向              上向下的兼容性有很大的影响

序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性

一般实体化序列化的目的有两个,第一个是便于存储,第二个是便于传输。只有将类序列化,才能够针对该类进行读写操作

第一:存储媒体里面,是否是有其相对应的数据结构

第二:这个实体类,是否需要远程传输(或者两个不同系统甚至是分布式模块之间的调用,针对nosql)?

使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象。必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。

除了在持久化对象时会用到对象序列化之外,当使用RMI(远程方法调用),或在网络中传递对象时,都会用到对象序列化。

无论是实现Serializable接口,或是Externalizable接口,当从I/O流中读取对象时,readResolve()方法都会被调用到。实际上就是用readResolve()中返回的对象直接替换在反序列化过程中创建的对象。

序列化之后,转化为一组字节,可以在网络上,他人才可以访问。

private transient String name ;// 声明name属性,但是此属性不被序列化

用途:

1、以前只是知道序列化以后,可以通过io流的方式将对象序列化和反序列化,进行存取;

用文件流来存储对象,如果对象未序列化,会报错:

java.io.NotSerializableException: com.rfcd.distribution.serviceImpl.Person

2、对象转换成一组byte,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了(自动补偿操作系统方面的差异。也就是说,你可以在Windows机器上创键一个对象,序列化之后,再通过网络传到Unix机器上,然后在那里进行重建)

3、通过"将做过序列化处理的对象写入磁盘,等到程序再次运行的时候再把它读出来",你可以达到persistence的效果。

4、Java的远程方法调用(Remote Method Invocation简称RMI)能让你像调用自己机器上的对象那样去调用其它机器上的对象。

最新文章

  1. 重新梳理HTML基础知识
  2. 真机测试-Please enter a different string错误解决
  3. iis 错误解决汇集
  4. 识别有效的IP地址和掩码并进行分类统
  5. [Z] 关于c++ typename的另一种用法
  6. VS2013 编译程序时提示 无法查找或打开 PDB 文件
  7. 可扩展Web架构与分布式系统
  8. 对于python的内存管理的好文章
  9. 关于label和input对齐的那些事
  10. C语言博客作业—嵌套循环
  11. git merge与 git rebase区别及实例
  12. Python爬虫入门教程 61-100 写个爬虫碰到反爬了,动手破坏它!
  13. Python Learning: 01
  14. Pandas库中的DataFrame
  15. JS_高程5.引用类型(1)Object类型
  16. Flash饼状图统计代码
  17. VC调试小结
  18. Linux命令之乐--iconv
  19. 软件工程 wc.exe 代码统计作业
  20. windows控制台程序——关于UNICODE字符的总结(转)

热门文章

  1. .NET下 JSON 的一些常用操作
  2. 【2018 Multi-University Training Contest 3】
  3. python之-- socket 基础篇
  4. 洛谷——P1347 排序
  5. [Bzoj1297][Scoi2009 ]迷路 (矩阵乘法 + 拆点)
  6. web应用启动的时候SpringMVC容器加载过程
  7. Spring Boot中实现logback多环境日志配置
  8. foobar2000 iOS使用,并连接PC的歌曲进行播放
  9. html5 拖拽元素
  10. 系统优化(一)Maven打包同一个jar有不同的:版本号+时间戳(解决思路)