item 14: 考虑实现Comparable接口
- Collections的sort方法会自动调用对象的compareTo方法排序,compareTo方法来自Comparable
- 注意一点,尽量保证 x.equals(y) 与 x.compareTo(y)一致,否则可能会出现一些小问题。因为某些集合判断调用的是equals(HashSet),带有序性的集合(TreeSet)调用的是compareTo,两者不一致。例子,
new BigDecimal("1.0")
和new BigDecimal("1.00")
同时添加到HashSet和TreeSet中,HashSet会有两个元素,TreeSet只有一个元素。
item 15: 最小化类及其属性的权限
- 类只有两种权限修饰符,public和默认。默认是包级私有,也就是包内可访问。
- 属性有四种权限。public,protected,默认,private。
- protected:包内可访问,包外需要是其子类才能访问
- 默认:包内可访问,包外不可访问。(接口除外,它的属性默认是public)
- private: 仅类的内部可访问。
- public类的中属性,尽量不用public修饰。静态属性也是如此,除非是静态常量的属性(数值或指向不可变对象的引用)。