黑马程序员——equals方法实现总结
来源:互联网 发布:java实现icmp协议 编辑:程序博客网 时间:2024/05/28 23:11
----------------------<a href="http://edu.csdn.net/heima"target="blank">android培训</a>、<a href="http://edu.csdn.net/heima"target="blank">java培训</a>、期待与您交流! ----------------------
equals方法实现小记
最近做项目,在一次写equals方法时突然悟出了一些心得,小记之,以备后用。在《Effective Java(第二版)》的Item7中提出我们要尽量避免重新equals方法,他同时也列举了几种我们不需要实现equals方法的情况:
1)类的每个实例从本质上来说是唯一的,如Thread类的实例。
2)我们并不会用到该类的equals方法,如Random类,虽然可以比较两个Random的实例,以判断两个实例是否可以产生相同的随机数,设计者认为这样的需求用到的场合很少,因而就没有重写equals方法。
3)父类已经实现了equals方法,并且父类实现方式和子类实现方式是一样的,如大部分的Set实现的equals方法使用AbstractSet类提供的equals方法,List实现则使用AbstractList,Map实现使用AbstractMap的。
4)一个private类或package-private类,我们自己可以确保我们不会使用到它们的equals方法。
同时书也提出一般只有值类型的类才需要实现equals方法,像Date、Integer、Order(作为bean来使用)等。
另外,我们在实现equals方法是也要遵循以下几个原则:
1)自反性(reflexive):x.equals(x)==true
2)对称性(symmetric):x.equals(y)==y.equals(x)
3)传递性(transitive):若x.equals(y)==true, y.equals(z)==true,则x.equals(z)==true。
4)一致性(consistent):多次调用x.equals(y)的结果应该是一样的。
5)对任何非null实例x,x.equals(null)==false。
----------------------<a href="http://edu.csdn.net/heima"target="blank">android培训</a>、<a href="http://edu.csdn.net/heima"target="blank">java培训</a>、期待与您交流! ----------------------
- 黑马程序员——equals方法实现总结
- 黑马程序员 equals() 方法
- 黑马程序员——使用equals实现对象的比较
- 黑马程序员-java笔记之equals和hascode方法总结。
- 黑马程序员-java笔记之equals和hascode方法总结。
- 黑马程序员——HashCode与equals
- 黑马程序员—方法日志总结
- 黑马程序员—方法重载日志总结
- 黑马程序员——equals方法和hashCode方法的问题
- 黑马程序员——复写Object类中equals()方法,用到Instanceof,向下转型,复写等等
- 黑马程序员——"=="和 equals方法究竟有什么区别
- [黑马程序员]集合_HashSet的equals方法
- 黑马程序员——equals和==的区别
- 黑马程序员—C# equals与==的区别
- 黑马程序员—java中的hashCode与equals
- 黑马程序员——.NET笔记8 字符串方法总结
- 黑马程序员——关于方法的总结笔记
- 黑马程序员——File类方法的简单总结
- Objective-C——消息、Category和Protocol
- 正则表达式整理大全
- 黑马程序员——java编程GUI基础总结
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP .
- Android常用URI
- 黑马程序员——equals方法实现总结
- style theme(2)
- 显示日历
- Yii CActiveRecord 在count 里写string 条件始终返回一
- gcc 与 g++
- android项目部署到手机
- ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)错误解决方法
- 五种布局
- Oracle EBS Documents