我想重寫自定義對象上的equals,並且想要檢查當前對象是否等於由Id(getId)在參數中傳遞的對象。我怎樣才能做到這一點?謝謝覆蓋客戶對象上的.equals()
-2
A
回答
1
只用您提供的信息給出答案是非常困難的。但你想要的東西大致是這樣的:
@Override
public boolean equals(Object o) {
if (! (o instanceof MyClass)) return false;
return id == ((MyClass)o).getId();
}
哪裏id
是您的數據字段(大概一個int
)和MyClass
是你的類的名稱。
備註:如果您覆蓋equals
,強烈建議您也覆蓋hashCode
。如果id
確實是一個整數,那麼你可能會考慮讓hashCode
只返回id
。
0
您需要檢查傳入對象的類型和「無效性」。您還應該檢查this.id
是否爲空以便徹底。您也可能要重寫Object.hashCode()
以便Set
s和Map
按您的要求工作。
@Override
public boolean equals(Object obj) {
if ((obj == null) || (!getClass().isAssignableFrom(obj.getClass()))) {
return false;
}
if (this.id == null) {
return false;
} else {
return this.id.equals((ClassName)obj.getId());
}
}
@Override
public int hashCode() {
return this.id.hashCode();
}
相關問題
- 1. 覆蓋客戶端上的RequriedFieldValidator?
- 2. 覆蓋對象
- 3. 如何覆蓋由實體數據模型創建的對象上的Equals?
- 4. 覆蓋equals()方法以允許異源對象
- 5. 客戶審閱JS覆蓋
- 6. 覆蓋空對象
- 7. JavaFX覆蓋對象
- 8. ArrayList,對象覆蓋
- 9. 覆蓋讓對象?
- 10. 覆蓋對象是
- 11. 覆蓋用戶對象上的默認get_absolute_url?
- 12. 覆蓋對象的嵌套對象
- 13. 「對象」的關係覆蓋?
- 14. 覆蓋DTO中的equals方法
- 15. NHibernate:覆蓋Equals和GetHashCode的原因
- 16. 覆蓋泛型類中的equals()方法
- 17. 覆蓋Arrays的equals方法.BinarySearch
- 18. Javascript:對象上下文被覆蓋?
- 19. 覆蓋訪問對象上下文SaveChanges
- 20. 數據被覆蓋在對象上
- 21. Magento的覆蓋客戶資源模型
- 22. 的Equals的對象
- 23. 關於在java中覆蓋equals方法
- 24. IEquatable - 覆蓋equals方法 - 檢查空
- 25. 實現EqualityCompare vs覆蓋GetHashCode和Equals
- 26. 覆蓋equals方法不會被調用
- 27. 在groovy中動態覆蓋`equals`和`hashCode`
- 28. 覆蓋對象屬性Javascript
- 29. 在C++中覆蓋對象
- 30. 如何覆蓋datetime.now()對象
請顯示您的代碼示例。 –
通常'equals'應該比較兩個對象的*相關成員*以確定相等性。 – 2012-09-30 22:29:54
如果您不確定,一個好的選擇是讓您的IDE爲您做。 – assylias