2012-09-30 59 views
-2

我想重寫自定義對象上的equals,並且想要檢查當前對象是否等於由Id(getId)在參數中傳遞的對象。我怎樣才能做到這一點?謝謝覆蓋客戶對象上的.equals()

+7

請顯示您的代碼示例。 –

+0

通常'equals'應該比較兩個對象的*相關成員*以確定相等性。 – 2012-09-30 22:29:54

+0

如果您不確定,一個好的選擇是讓您的IDE爲您做。 – assylias

回答

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(); 
}