java effective阅读
第二章
- 考虑用静态工厂方法代替构造器
- 遇到多个构造器参数时要考虑用构造器
- 用私有构造器或者枚举类强花Singleton属性
- 通过私有构造器强化不可实例化的能力
- 避免创建不必要的对象
- 消除过期的对象引用
- 避免使用终结方法
第三章
- 覆盖equals时请遵守通用约定
- 在覆盖equals方法时,你必须要遵守他的通用约定。下面是约定内容,来自Object的规范[JavaSE6]:
equals方法实现了等价关系(equivalence relation): - 自反性(reflexive)。对于任何非空的引用值x,x.equals(x)必须返回true。
- 对称性(symmetric)。对于任何非空的引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)必须返回true。
- 传递性(reansitive)。对于任何非null的引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也必须返回true。
- 一致性(consistent)。对于任何非null的引用值x和y,只要equals的比较操作在对象中所用的信息没有被修改, 多次调用x.equals(y)就会一致的返回true,或者一致的返回false。
- 对于任何非null得引用值x,x.equals(null)必须返回false。
- 覆盖equal时总要覆盖hashCode