A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王光保 黑马帝   /  2011-7-18 09:46  /  4306 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个类如果实现了Serializable接口以后可以直接序列化,而且此接口没有任何方法,也不会让实现类增加不必要的操作,那么所有的类都实现该接口不更好吗?这样也为类增加了一个功能。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 你真敢想,为什么不把所有人都变成奥特曼呢

查看全部评分

3 个回复

倒序浏览
黑马网友  发表于 2011-7-18 10:01:10
沙发
实现serializable接口的作用是就是可以把对象存到字节流,然后可以恢复!
所以你想如果你的对象没实现序列化怎么才能进行网络传输呢,要网络传输就得转为字节流,所以在分布式应用中,你就得实现序列化,如果你不需要分布式应用,那就没那个必要实现序列化.

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 我很赞同

查看全部评分

回复 使用道具 举报
从表面上来看,如果我们让我们的每一个类都实现serializable接口,使它们都可以进行序列化,(即使我们并不一定真的需要对某些类序列化),但能使这些类的功能更强,不是更好吗?
其实不然,虽然当前的serializable接口里面没有任何方法,但是JDK的版本在不断的更新,谁也不能保证以后会不会有方法定义,假设一旦出现了方法,则咱们必须为所有的类重写这个方法。那么这样的代价是很大的。

改正一下:
虽然说在日后版本jdk中,sun可能在serializable接口中增加方法,但是也不能完全的说,只要类暂时用不到序列化操作,就别去实现serializable接口。   通过serializable接口来扩展一小部分类的功能,还是允许的。但是不要大量使用。(这下够严谨了吧?)
[ 本帖最后由 cxy_zy 于 2011-07-21  12:11 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
admin + 1 第一句赞同,第二句反对,那样做对sun是个悲剧

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-20 18:05:26
板凳
上面两位回答得都很好,我再补充一点。
Serializable接口是没有任何方法,但是也不会让实现类增加不必要的操作的说法是不对的。
首先 ,序列化只用在特殊的场合,一般情况下不需要序列化,没必要Serializable接口。正如楼主所说,实现Serializable接口很容易,那么有需要时才实现Serializable接口,不是也很方便吗?

如果类Serializable接口,那么它的所有子类对象都是可序列化的,而序列化是要消耗资源的。而且如果序列化的类含有另一个可序列化的对象的引用,那么被引用的对象也会序列化!注意序列化是要消耗资源的。

如果序列化类要升级,需要测试兼容性,而测试的工作量是与可序列化的类的数码成正比的。特别是为继承而设计的类,实现Serializable接口更要谨慎,因为父类序列化,子类也可序列化,升级会大大增加测试的工作量。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 辛苦加1分

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马