java effective阅读

第二章

    1. 考虑用静态工厂方法代替构造器
    1. 遇到多个构造器参数时要考虑用构造器
    1. 用私有构造器或者枚举类强花Singleton属性
    1. 通过私有构造器强化不可实例化的能力
    1. 避免创建不必要的对象
    1. 消除过期的对象引用
    1. 避免使用终结方法

第三章

    1. 覆盖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。
    1. 覆盖equal时总要覆盖hashCode