Java equals()重写
来源:互联网 发布:网络用语 看法 编辑:程序博客网 时间:2024/06/05 11:07
参照java核心卷1
java规范中equals方法特征
- 自反性
对于任何非空引用x, x.equals(x) 返回true;
- 对称性
对于任何引用x, y, 当且仅当y.equals(x) 返回true, x.equals(y)返回true;
- 传递性
对于任何引用x, y, z, 若x.equals(y)返回true, y.equals(z)返回true; 则 x.equals(z)返回true;
- 一致性
若x和y引用的对象没有发生改变, 则反复调用x.equals(y)应该返回同样的结果.
- 对任意非空引用x, x.equals(null) 返回false;
编写equals方法的建议:
- 显示参数命名为otherObject, 稍后转化成other变量public boolean equals(Object otherObject)
- 检测this和otherObject是否是同一个对象的引用,是,返回true;if(this==otherObject){
return true;
} - 检测otherObject是否为null, 是, 返回false;if(otherObject == null){
return false;
} - 比较this和otherObject是否属于同一个类. 如果equals的语义在每个子类中有所改变,就使用getClass检测:如果所以子类语义相同,使用instanceof检测:if(getClass() != otherObject.getClass()){
return false;
}if(!(otherObject instanceof Employee)){
return false;
} - 将otherObject转化为相对应的类型变量otherEmployee other = (Employee)otherObject;
- 对所需要的比较的数据域进行比较. 如果是基本数据类型,使用a==b比较; 如果是对象比较,调用Objects.equals(a, b)进行比较return Objects.equals(name, other.name) && salary == other.salary && Objects.equals(hireDay, other.hireDay);
private String name;
private double salary;
private Date hireDay;
...
@Override
public boolean equals(Object obj) {
// 如果为同一对象的不同引用,则相同
if (this == obj) {
return true;
}
// 如果传入的对象为空,则返回false
if (obj == null) {
return false;
}
// 如果两者属于不同的类型,不能相等
if (getClass() != obj.getClass()) {
return false;
}
// 类型相同, 比较内容是否相同
Employee other = (Employee) obj;
return Objects.equals(name, other.name) && salary == other.salary && Objects.equals(hireDay, other.hireDay);
}
}
- JAVA重写equals方法
- JAVA重写equals方法
- java 重写equals方法
- java equals重写
- 【JAVA】Equals重写
- java 重写equals()
- java equals重写
- Java重写equals
- Java 重写equals
- Java重写equals方法
- java 重写 hashCode、equals
- Java重写equals()方法
- java 重写equals()方法
- Java重写equals方法
- Java equals()重写
- java 重写equals方法
- 重写java底层equals
- java override equals(重写equals)
- HTML5(1)__简介
- Android实现即时音效和背景音乐(整理自用)
- I/O
- memcached--PHP版demo
- 八数码
- Java equals()重写
- Linux如何自动挂载U盘
- STM32 通用定时器的定时功能 学习笔记
- strcpy与strcpy_s
- 多维数组“重塑”
- Spring MVC 相关注解知识
- Android中imageloader加载的一些简便方法
- Spring Data Redis(Redis Cluster)
- 关于urllib2.urlopen()的理解