Effective Java 读书笔记之十 序列化
一、谨慎地实现Serializable接口
1、一旦一个类被发布,就大大地降低了“改变这个类的实现”的灵活性。
2、仔细设计类的序列化形式而不是接受类的默认虚拟化形式。
3、反序列化机制是一个“隐藏的构造器”,具备与其他构造器相同的特点。
二、考虑使用自定义的序列化形式
三、保护性地编写readObject方法
1、对于对象引用域必须保持为私有的类,要保护性地拷贝这些域中的每个对象。
2、检查失败要抛出InvalidObjectException异常,检查应该跟在所有的保护性拷贝之后
3、无论直接还是间接,都不要调用类中任何可覆盖的方法。
四、对于实例控制,枚举类型优先于readResolve方法
五、考虑用序列化代理代替序列化实例
Effective Java 读书笔记之十 序列化的更多相关文章
- Effective Java读书笔记完结啦
		
Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. ...
 - Effective java读书笔记
		
2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己 计在16年要看12本书,主要涉及java基础.Spring研究.java并发.J ...
 - Effective Java 读书笔记(一):使用静态工厂方法代替构造器
		
这是Effective Java第2章提出的第一条建议: 考虑用静态工厂方法代替构造器 此处的静态工厂方法并不是设计模式,主要指static修饰的静态方法,关于static的说明可以参考之前的博文&l ...
 - [Effective Java 读书笔记] 第三章类和接口 第十三 -- 十四条
		
第十三条 使类和成员的可访问性最小化 总得来说,我们应该尽量将成员的访问范围限制到最小!有利于解耦,开发.测试和优化都能够更加独立. 对于成员(域,方法,嵌套类和嵌套接口),有四种可能的访问级别,访问 ...
 - [Effective Java 读书笔记] 第三章类和接口 第二十-二十一条
		
第二十条 用函数对象表示策略 函数指针(JAVA的函数指针,是指使用对象的引用来作为参数,传递给另一个对象的方法)主要用来实现策略模式,为了在JAVA中实现这种模式,要申明一个接口来表示该策略,并为每 ...
 - [Effective Java 读书笔记] 第三章类和接口 第十八--十九条
		
十八条 接口优于抽象类 接口的特点: 1.一个类可以实现多个接口,不能继承多个类(抽象类) 2.接口不能有具体的方法实现,只定义标准类型 骨架类: 即实现一个abstract类来实现接口,提供给其他类 ...
 - [Effective Java 读书笔记] 第三章类和接口 第十六条
		
第十六条 复合优先于继承 如果不确定B和A的关系是,is-a的关系,B确实也是A,那么久不应该使用B继承A,否则会暴露实现细节, 你的实现都会限制在原始的实现上. 书中举的第一个例子,实现了一个类ex ...
 - [Effective Java 读书笔记] 第三章 对所有对象都通用的方法 第十---十一条
		
第十条 始终覆盖toString() toString的实现可以使类使用起来更加舒适,在执行println等方法时打印出定制信息. 一单实现了自己的toString,指定输出的固定格式,在方法的文档说 ...
 - Effective Java 读书笔记之七 通用程序设计
		
一.将局部变量的作用域最小化 1.在第一次使用变量的地方声明 2.几乎每个变量的声明都应该包含一个初始化表达式:try-catch语句是一个例外 3.使方法小而集中是一个好的策略 二.for-each ...
 
随机推荐
- 初始化Git的配置
			
如何使用Git上传项目代码到github http://blog.csdn.net/llf369477769/article/details/51917557
 - 安装Virtual Box增强功能 - Ubuntu
			
一.开发环境 操作系统:Windows 7Virtual Box 版本: 5.0.10 虚拟机系统: Ubuntu 12.04 LTS 二.问题 进入Ubuntu图形界面后,选择“设备” --> ...
 - quartz_jobs.xml标准配置
			
<?xml version="1.0" encoding="UTF-8"?><job-scheduling-data xmlns=" ...
 - AspectJ基础学习之二搭建环境(转载)
			
AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...
 - ubuntu下Eclipse安装
			
安装的版本是MARS 直接复制安装包到安装的目录,然后tar zxvf XXXX 对于不能输入中文,把系统的输入法改成ibus就行了,fctix不支持eclipse 汉化包的下载地址 http://d ...
 - join和setdaemon()初探
			
join()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用线程 ...
 - FBX
			
http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/index.html http://forums.autodesk.com/t5 ...
 - Jquerymobile 简单安装
			
需要导入三个文件jquery,jquerymobile,css(jquerymobile地址:http://jquerymobile.com/) <script src="js/jqu ...
 - bootloader
			
1) C# 为了给设备升级固件,在前同事的基础上改了下,在.NET Framework下写的. 2)Tera Term + ttl 上面.NET平台的运行文件虽然小巧,但是依赖.NET Framewo ...
 - mouse scrollings and  zooming operations in linux & windows are opposite
			
mouse scrollings and zooming operations in linux & windows are opposite. windows中, 鼠标滚动的方向是: 查看页 ...