Effective Java 8-13

八:改写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,非可变对象本质是线程安全的,不需要同步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值