最新载学习Effective java,做一个简单的记录
1: 考虑用静态工厂方法代替构造器;
2: 遇到多个构造器参数时要考虑用构建器;
3: 用私有构造器或者枚举类型强化Singleton属性;
4: 通过私有构造器强化不可实例化的能力;
5: 避免创建不必要的对象;
6: 消除过期的对象引用;
7: 避免使用终结方法;
8: 覆盖equals时请遵守通用约定
五大通用约定: 自反性,对称性,传递性,一致性,非空性。
实现equals的几个小诀窍:
1): 使用 == 操作符检查“参数是否为这个正确的类型”
2): 使用instanceof操作符检查“参数是否为正确的类型”
3): 把参数转换为正确的类型
4): 对应该类型中的每个“关键” 域,检查参数中的域是否与该对象中的对应的域相匹配。
5): 当前编写完成了equals方法之后,应该问自己三个问题: 它是否对称的,传递的,一致的。
三个告诫:
---》覆盖equals时总要覆盖hashCode。
---》不要企图让equals方法过于智能。
---》不要将equals声明中的Object对象替换为其他的类型
9: 覆盖equals时总要覆盖hashcode
10: 始终要覆盖toString函数
11: 谨慎的覆盖clone
12:考虑实现Comparable接口
13:使类和成员的可访问最小化
14:在公用类中使用公用方法而非公有域
15:使可变性最小化
16:复合优先于继承
19:接口只用于定义类型
20:类层次优于标签类