首先要了解java默认的序列化行为,java将一切关于对象的信息都保存了下了,也就是说,有些时候那些不需要保存的也被保存了下来。一般情况下,我们仅仅需要保存逻辑数据就可以了。不需要保存的数据我们可以用关键字transient标出。

例如:

import java.io.*;

public class Serial implements Serializable {

int company_id;

String company_addr;

transient boolean company_flag;

}

其中的company_flag字段将不会参与序列化与反序列化,但同时也增加了为它初始值的责任。这也是序列化常常导致的问题之一。因为序列化相当于一个只接受数据流的public构造函数,这种对象构造方法是语言之外的。但他仍然是一种形式上的构造函数。如若你的类不能够通过其他方面来保证初始化,则你需要额外的提供readObject方法,首先正常的反序列化,然后对transient标示的字段进行初始化。

在不适合的时候,使用java默认的序列化行为可能会带来速度上的影响,最糟糕的情况是,可能导致溢出。在某些数据结构的实现中,经常会充斥着各种的循环引用,而java的默认序列化行为,并不了解你的对象结构,其结果就是java试图通过一种昂贵的“图遍历”来保存对象状态。可想而知,不但慢而且可能溢出。这时候你就要提供自己的readObject,来代替默认的行为。

java里seri_关于serilization相关推荐

  1. Java 里的 for (;;) 与 while (true),哪个更快?

    点击关注公众号,Java干货及时送达 在JDK8u的jdk项目下做个很粗略的搜索: mymbp:/Users/me/workspace/jdk8u/jdk/src $ egrep -nr " ...

  2. 快手二面:Java 里的 for (;;) 与 while (true),哪个更快?

    转自:知乎 www.zhihu.com/question/52311366/answer/1300903 在 JDK8u 的 jdk 项目下做个很粗略的搜索: mymbp:/Users/me/work ...

  3. JAVA里面的int类型 和Integer类型,有什么不一样

    JAVA里面的int类型 和Integer类型,有什么不一样 原创 2013年09月04日 23:15:11 标签: java / 2120 编辑 删除 JAVA里面的int类型 和Integer类型 ...

  4. 【转】Java里如何实现线程间通信

    正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了. 本文涉及到的知识点:thread.join(), object.w ...

  5. 原型模式(ProtoType) - Java里的对象复制

    一, 引用的复制和对象复制. 在编程中, 我们有时会用两个引用指向同一个对象. 例如: ArrayList a = new ArrayLIst(); ArrayList b = a; 看起来好像有a, ...

  6. Java里的数组介绍

    注意, 本文讲的是数组(Array),  非数组型线性表容器(ArrayList). 一. C语言的静态数组和动态数组. 稍微接触过c的程序猿都应该知道, c语言里的数组分为静态数组和动态数组. 1. ...

  7. Java 里的泛型简介.

    我们在JDK中有时回见到1个类or接口后面跟这1个尖括号. 例如: java.util.HashMap<K,V> 我们一开始大概知道K,V 大概就是Key和Value的意思, 键值对嘛, ...

  8. Java里的容器存放的元素必须是1个对象.

    我们经常看到这个句话: Java里存放的容器只能是1个对象. 一. 值类型和对象类型. 实际上, java里的变量可以分为两种类型, 一种是值类型. 一种是对象类型. 1.1 值类型变量 所谓值类型的 ...

  9. Java里的容器 Collection 简介

    容器也是Java面试经常问到的问题.  也是Java编程的其中1个难点. 在一篇文章中很难全部讲清楚, 我打算分几篇逐步介绍. 一.  什么是容器 1.1 容器的定义 Java里的容器的定义很简单: ...

  10. Java里的字符串, String类简单介绍.

    String类在java面试中也是1个常见的问题点. 所以也是写在这里方便以后查阅了. 大家都知道c语言里是没有String 字符串这个数据类型的. 只能用字符数组的1个特殊形式来表示一个字符串, 就 ...

最新文章

  1. 个人计算机中的cache,cache在计算机中的作用是什么?
  2. git工具tig用法
  3. 自己写的程序发给别人老是会出现缺失各种库,而自己电脑运行却没毛病
  4. r语言调用dll出现错误载入表里没有c字符名,R语言(示例代码)
  5. Verilog代码风格
  6. java程序怎么都不是一个_java运行的流程-怎么运行java程序编了一个程序不知道怎么运行郁闷啊后缀文件名是 爱问知识人...
  7. 半路学编程,可以成为大牛吗?
  8. 一支python教学_第一只python爬虫
  9. 让网络不再瘫痪 ARP病毒的解决措施
  10. jquery与javascript的引入问题
  11. matplotlib 绘制直方图和拟合正态曲线
  12. case when 失效,看了这篇文章就明白了
  13. JOI2014Final 飞天鼠
  14. 下载地址部落冲突(Clash Of Clans)免费获取宝石
  15. bash ps1变量_Shell PS1变量:命令提示符设置
  16. OpenCV物体颜色检测(Python)
  17. 苹果手机一卡通找不到了的解决方案 换手机 重下APP 找不到一卡通解决方案
  18. 台灯AAA和AA有什么区别?国AA台灯有必要买吗
  19. Android去除EditText的聚焦Focuse
  20. 触心创业路 - 记一家VR游戏创业团队的经历

热门文章

  1. 美团综合业务推荐系统的质量模型及实践
  2. Spring之Bean后处理器——InstantiationAwareBeanPostProcessor的使用与源码解析
  3. Android Activity 的详细启动过程分析
  4. fiddler打开之后google浏览器无法上网的解决办法
  5. EPSG是什么?WKT是什么?SRID是什么?EPSG、WKT、SRID概念
  6. [国家集训队] 矩阵乘法
  7. 日语中的-简体与敬体
  8. SQL Server中查询累计和与滑动平均值
  9. 技术主管和技术总监的区别_技术主管–责任圈
  10. 一些真正免费的API接口