概述
只做简单说明,具体关于What & Why & How 请移步《Effective Java 第2版》–第8条
重写equals要注意的五条规则:
1:自反性
2:对称性
3:传递性
4:一致性
5:非空性
具体的范式写法
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
if (this == obj) {
return true;
}
if (obj != null && obj instanceof Entity) {
Entity a = (Entity) obj;
return (this.field == null ? a.field == null : this.field.equals(a.field));// 多个域比较范式
}
return false;
}
最后说两句:
一般关于对象之间的比较分为两种:逻辑比较与物理比较
逻辑比较通常是指:通过equals方法对两个对象的引用比对,两个对象的值是否在逻辑上相等.
物理比较通常是指:通过==比较,两个对象的引用是否指向同一对象(内存地址)