八:改写equals方法时总要改写hashCode
原因:来自java.lang.Object关于hashCode的规范
1,在一个应用执行期间,如果一个对象的equals方法比较所用到的信息没有修改的话,那么对该对象调用hashCode多次,比如如一的返回同一个数
2,如果两个对象的equals方法返回true,那么分别调用hashCode方法返回的值应该相等
3,在两个兑现的equals方法返回false时,尽可能的让hashCode方法返回的值不相等,提高散列表的性能
分析:如果改写了equals没有改写hashCode在使用map等集合类的时候会出现问题。
九:尽可能的改写toString方法,并在显示内容中尽可能的包括令人感兴趣的信息。并且在注释中表示出你的意图。
十:谨慎的改写clone方法,改写前考虑浅拷贝和全拷贝
十一:考虑实现Comparable接口,如果你的对象要排序,那么记得实现这个方法
十二:使类和成员的可访问能力最小化,
十三:支持非可变性
非可变性遵循以下的原则:
1,不提供任何改变对象的方法
2,保证没有可被子类改写的方法
3,保证所有的域都使final
4,使所有的域都成为私有的
5,保证任何可变组件互斥访问
6,非可变对象本质是线程安全的,不需要同步