文档章节

Serializable 和 Externalizable 接口的关系

terry_hug
 terry_hug
发布于 2014/08/29 21:15
字数 516
阅读 15
收藏 0

 Serializable 接口是序列化的最顶层接口,Externalizable是它的补充,用于可定制的序列化过程。

声明为Serializable 将会在序列化的过程中使用“默认”的方式来存储和重建对象。例如,在进行序列化的ObjectInputStream或其子类对象中,对实现Serializable的对象的处理有JDK“默认”的方式,当然,也可以通过继承和覆写指定对引用和复杂数据结构的处理,但主要的处理逻辑还是在ObjectInputStream类里,这显然不太合理,毕竟对处理的object如何序列化的解释者是该对象的编写者,不是么?

按照前面的思路,于是就有了Externalization接口,声明此接口的类可实现完全自定义的对象存储和重建方式,对,这样就使得对象的序列化方式和对象类“绑定”到一起了。这种设计方式看似很好,但每个类都去编写实现序列化的防范,得把人累死啊。

实践证明,JDK”默认“的方式更好——早期版本的java,反射机制非常缓慢,序列化大型对象存在性能问题,Externalization接口的另外一个意义也在于能突破反射的性能瓶颈。而得益于Java 1.3之后更快的反射机制,JDK自动化的对象序列化处理才突显出优势,毕竟在需要序列化的场景,没人愿意每写一个类都去实现一遍序列化方法吧?

Externalization接口也还有存在的必要,RMI部分就是很好的例子。


© 著作权归作者所有

terry_hug
粉丝 0
博文 8
码字总数 1866
作品 0
广州
私信 提问
Java序列化——transient关键字和Externalizable接口

提到Java序列化,相信大家都不陌生。我们在序列化的时候,需要将被序列化的类实现Serializable接口,这样的类在序列化时,会默认将所有的字段都序列化。那么当我们在序列化Java对象时,如果不...

摆渡者
2015/11/04
450
0
Java中对象序列化与反序列化

概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 把对象的字节序列永久地保存到硬盘上,通常存放在一个文...

Hosee
2015/12/14
1K
0
Serializable和Externalizable

Serailizable,类通过实现此接口使类对象可以被序列化,如把某对象保存到本地磁盘上,然后再从磁盘还原成jvm里的对象,代码如下: public static void main(String[] args) throws Exceptio...

伊森papa
2013/10/17
1K
0
Java对象的序列化与反序列化

序列化与反序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等。在网络传输过程中,可以是字...

天蚕宝衣
2016/03/07
82
0
深度解析单例与序列化之间的爱恨情仇~

转载:原文链接:https://mp.weixin.qq.com/s/iXC47w4tMfpZzTNxS_JQOw 首先来写一个单例的类:code 1 接下来是一个测试类: code 2 输出结构为false,说明: 通过对Singleton的序列化与反序列化...

u010398771
2018/02/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

重新开始学Java——反射

概念 reflection:自省 反射:镜子可以反射阳光一个java类 或 对象 通过照"镜子"来认知自己 Java语言中是怎么实现照镜子? java.lang.reflect 包 提供了"照镜子"API(应用程序接口) 如果要...

大家都是低调来的
30分钟前
7
0
爬取720万条城市历史天气数据

内容爬虫完毕,校验完毕,缺失信息暂未统计。总数据720万,地区3200个,年份从2011-2019,大小950Mb,原始数据已丢失,需要的朋友可以自己运行脚本挂一晚上。中间遇到了很多坑,有机会我再写...

八音弦
34分钟前
24
0
python的字典类型

1、新建字典 通过键值对 dict_1 = {'a':1,'b':2,'c':3} 通过dict()函数 list_1 = ['adam', 'bob', 'cathy', 'david', 'emma'] list_2 = [1,2,3,4,5] dict_2 = dict(zip(list_1,list_2)) 2、字......

davidwbnu
36分钟前
9
0
springcloud vue.js 前后分离 activiti工作流

本商品为 :springcloud + Springboot 微服务\分布式 工作流 前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架 :springcloud Greenwich.SR1 + springboot 2.1.4 + activiti6.0.0 + ...

java框架开发者
42分钟前
13
0
【jQuery基础学习】07 jQuery表单插件-Form

本文转载于:专业的前端网站➦【jQuery基础学习】07 jQuery表单插件-Form 作用:jQuery Form插件的作用是为了让我们可以很方便地用ajax的方式提交表单,从而使我们提交表单的时候页面不用进行...

前端老手
51分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部