概述
只做簡單說明,具體關於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方法對兩個對象的引用比對,兩個對象的值是否在邏輯上相等.
物理比較通常是指:通過==比較,兩個對象的引用是否指向同一對象(內存地址)