六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 49|回复: 0

Effective Java 读书笔记(10)

[复制链接]

升级  21.33%

20

主题

20

主题

20

主题

秀才

Rank: 2

积分
82
 楼主| 发表于 2013-2-3 14:08:12 | 显示全部楼层 |阅读模式
74,谨慎的实现Serializable接口。实现这个接口要付出若干代价:1,类发布以后,内部实现就不好修改了;2,增加了出bug和安全漏洞的可能性;3,发布新版本的时候增加了测试负担,因为要增加对二进制兼容性和语义兼容性的测试。这一条里还提到为了继承而设计的类应该尽可能少的去实现Serializable接口。Struts1的ActionForm就实现了这个接口,你还必须得继承它,到了Struts2就没这个限制了,确实进步了很多。
    75,考虑使用自定义的序列化形式。这个还真没用过。默认表示形式有4个坏处:1,它使类的导出API永远束缚在该类的内部表示方法上;2,它会消耗过多的空间;3,它会消耗过多的时间;4,它会引起栈溢出。还有一点要注意的是,不管你选择了哪种序列化方式,都要为可序列化的类生成一个serial version UID。
    76,保护性的编写readObject方法。
    77,对于实例控制,枚举类型优先于readResolve。
    78,考虑用序列化代理代替序列化实例。
   
    对于序列化,平时用的并不多,而且java序列化的效率一贯为人诟病,这几条也就是看看,如果将来有用到的时候,再看看吧。
    这本书终于算是看完了,确实是好书,有些常用的部分,看起来很有“确实如此,就该这样”的感觉,不过呢,接触少的部分,比如序列化,看起来就有点儿无聊,因为没太多的了解。其实我觉得也不需要什么都懂,大概知道一下,出问题的时候知道能从哪里入手去解决就好了。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表