我已經在Java中創建了一個複雜的對象,我正在使用equals方法進行比較。在Java中使用Object.equals()是一種可接受的做法嗎?
這是好的還是最好給對象一個名稱或ID並比較對象的名稱/ ID?
我已經在Java中創建了一個複雜的對象,我正在使用equals方法進行比較。在Java中使用Object.equals()是一種可接受的做法嗎?
這是好的還是最好給對象一個名稱或ID並比較對象的名稱/ ID?
您應該使用equals()
方法。如果您想讓名稱和/或編號比較爲平等,請在equals()
方法中執行。
這是Java determines equality的默認方式。
而且,看看一些答案了這樣一個問題:Overriding the java equals() method quirk
有equals()
和hashcode()
之間的關係。這兩個都被Collections使用。
默認equals
繼承自Object#equals()
比較參考。換句話說,如果2個對象相同(內存中的相同對象),則返回true。
如果您希望等於返回true,如果您的兩個對象共享相同的特徵,即使它們是不同的對象,那麼您應該覆蓋等於並比較這些特徵。
如果您覆蓋等於,you should also override hashcode。
而且您還應該重寫hashCode(),以便如果兩個對象相等,則它們具有相同的哈希碼。 – 2012-08-05 20:41:04
@ AndyThomas-Cramer是 - 已編輯。 – assylias 2012-08-05 20:42:19