摘要: 将一个对象编码成字节流称作将该对象「序列化」。相反,从字节流编码中重新构建对象被称作「反序列化」。一旦对象被「序列化」后,它的编码就可以从一台虚拟机传递到另一台虚拟机,或被存储到磁盘上,供以后「反序列化」使用。序列化技术为JavaBean组件结构提供了标准的持久化数据格式。 74、谨慎的实现Seri 阅读全文
posted @ 2016-09-24 18:24 Alent 阅读(559) 评论(2) 推荐(0) 编辑
摘要: 66、同步访问共享的可变数据 JVM对不大于32位的基本类型的操作都是原子操作,所以读取一个非long或double类型的变量,可以保证返回的值是某个线程保存在该变量中的,但它并不能保证一个线程写入的值对于另一个线程是可见的。因此在读或写原子数据时,使用线程同步是有必须要的,否则将时线程间数据不一致 阅读全文
posted @ 2016-09-24 18:22 Alent 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 57、只针对异常的情况才使用异常 在这段程序中,当循环企图访问数组边界之外的元素时,程序抛出异常并结束无限循环。。使用异常以达到终止无限循环,这种模式不仅模糊了代码的意图,而且降低了性能(因为异常模式比标准模式慢的多)。 异常应该只用于异常的情况,不要将它们用于控制流,也不要编写迫使客户端使用控制流 阅读全文
posted @ 2016-09-24 18:21 Alent 阅读(486) 评论(0) 推荐(0) 编辑
摘要: 45、将局部变量的作用域最小化 将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性。 Java允许在任何可以出现语句的地方声明变量(C语言中局部变量要在代码块开头声明),要使局部变量的作用域最小化,最好的方法是在第一次使用它的地方声明。局部变量的作用域从它被声明的点开始扩展 阅读全文
posted @ 2016-09-24 18:20 Alent 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 38、检查参数的有效性 绝大多数方法和构造器对于传递给它们的参数值都会有限制。如,对象引用不能为null,数组索引有范围限制等。 应该在文档中指明所有这些限制,并在方法的开头处检查参数,以强制施加这些限制。 对于公有的方法,使用异常检查参数,并在Javadoc的@throws标签中说明违反参数限制时 阅读全文
posted @ 2016-09-24 18:19 Alent 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 30、用enum代替int常量 枚举类型是指由一组固定的常量组成合法值的类型。在java没有引入枚举类型前,表示枚举类型的常用方法是声明一组不同的int常量,每个类型成员一个常量,这种方法称作int枚举模式。采用int枚举模式的程序是十分脆弱的,因为int值是编译时常量,若与枚举常量关联的int发生 阅读全文
posted @ 2016-09-24 18:18 Alent 阅读(570) 评论(2) 推荐(1) 编辑
摘要: 泛型为集合提供了编译时类型检查。 23、不要在代码中使用原生态类型 声明中具有一个或多个类型参数的类或接口统称为泛型。 是一个参数化类,表示元素类型为 的列表。为了提供兼容性,每个泛型都定义一个原生态类型,即不带任何实际类型参数的泛型名称。例如, 的原生态类型为 。 使用原生态类型将逃避编译时的类型 阅读全文
posted @ 2016-09-24 18:17 Alent 阅读(742) 评论(0) 推荐(0) 编辑
摘要: 类与接口是Java语言的核心,设计出更加有用、健壮和灵活的类与接口很重要。 13、使类和成员的可访问性最小化 设计良好的模块会隐藏起所有的实现细节,仅使用API与其他模块进行通信。这个概念称为信息隐藏或封装,是软件设计的基本原则之一。信息隐藏可以是实现系统各模块的解耦,以使这些模块可以独立的开发、测 阅读全文
posted @ 2016-09-24 18:15 Alent 阅读(704) 评论(0) 推荐(0) 编辑
摘要: Object类的所有非final方法( )都要遵守通用约定( ),否则其它依赖于这些约定的类( )将不能正常工作。 8、覆盖equals时请遵守通用约定 无需覆盖 的情形: 类的每个实例本质上是唯一的。类代表的是活动实体而不是值的概念。(例如,类 ) 不关心类“逻辑相等”的功能,从 继承的 实现已经 阅读全文
posted @ 2016-09-24 18:10 Alent 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 1、考虑用静态工厂方法代替构造器 类的一个实例,通常使用类的公有的构造方法获取。也可以为类提供一个公有的静态工厂方法(不是设计模式中的工厂模式)来返回类的一个实例。例如: 使用静态工厂方法代替构造器的优势: 静态工厂方法有名称,更易读。静态工厂方法能够使用方法名称进行自注释,来描述被返回的对象。例如 阅读全文
posted @ 2016-09-24 17:48 Alent 阅读(748) 评论(0) 推荐(0) 编辑