为类编写完美的Equals()
来源:互联网 发布:java代码实现阶乘 编辑:程序博客网 时间:2024/06/13 22:38
1 显式参数命名为otherObject,稍后需要将他转换成另一个叫做other的变量。
2 检测this与ohterObject是否引用同一个对象:
if(this==otherObject) return true;这条语句只是一个优化,实际上,这是一种经常采用的形式,因为计算这个等式要比一个一个比较类中的成员域的开销小的多。
3 检测otherObject 是否为null,如果为null,返回false。此项检测非常必要。
if(otherObject == null) return false;4 比较this与otherObject是否属于同一个类。如果equals的语义在每个子类着哦功能所有改变,就是用getClass检测:
if(getClass() != otherObject.getClass()) return false;如果所有的子类都拥有统一的语义,则使用instanceof检测。
if( !(otherObject instaanceof ClassName) ) return false;
5 将otherObject 转换为相应的类类型变量:
ClassName other = (ClassName) otherObject;6 现在开始需要对所有的类的成员域进行比较了。使用==比较基本类型成员域,使用equals比较对象成员域。如果所有的域都匹配就返回true,否则返回false。
return ( filed1 == other.field1 && filed2 == other.field2 && filed3.equals(other.field3) );
如果在子类中重新定义equals,就要在其中哦功能包含调用
super.equals(other);
综合:
public boolean equals(Object otherObject){ //a quick test to see if the objects are idnetical if(this == otherOtherject) return true; //must return false if the explicit parameter is null if(otherObject == null) return false; // if the class do not match, htey can not be equal if(getClass() != otherOgject.getClass()) return false; // now we know otherObject is a non-null Employee Employee other = (Employee) otherObject; //test whether the fields have identical values return ( name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay) );}
0 0
- 为类编写完美的Equals()
- java编写一个完美的equals方法
- 如何编写完美的 equals 方法
- Java 编写一个完美的equals()方法的建议
- 编写一个完美的equals方法的建议
- 在Java中编写完美的equals方法
- Java实践(四)---编写一个完美的equals方法
- Java中编写一个完美的equals方法
- 完美编写java中equals方法的建议
- 基础巩固--编写一个完美的equals方法
- Rhyme/Java getClass()与instanceof的区别以及如何编写一个完美的equals()
- 重写完美Equals的方法
- 完美的equals方法的建议
- java重载与重写的区别+重写父类equals方法的完美实现
- 如何编写自己的equals方法
- java-编写高质量的equals
- java中写一个完美equals方法的建议
- My_Java之笔记(6)- 完美equals()的定义
- 从点击到呈现 — 详解一次HTTP请求(4)
- Request的getParameter和getAttribute方法的区别 (
- “硬解码”与“软解码”的区别
- LED音乐频谱之输入数据处理
- Java集合源码学习(13)_Queue接口以及基础实现AbstractQueue
- 为类编写完美的Equals()
- HDU 2035人见人爱A^B(数字快速幂法)
- 【组队赛三】-E Binary Search cf448D
- 最小生成树问题
- HDUOJ 2089 数位DP
- PyQt 的一些小总结 (信号槽,弹框)
- android tv开发碰到的坑儿----第一篇
- ios 正则表达式
- 线程和进程区别和联系。什么是“线程安全”?