簡體   English   中英

FindBugs:重寫equals()導致靜態代碼分析錯誤EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS

[英]FindBugs: overridden equals() causing static code analysis error EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS

我收到了FindBugs錯誤,我很困惑如何解決。 由於這是舊的,遺留的代碼,因此我無法做太多事情。 equals()實現,雖然不是很完美,但是可以完成工作,但是在靜態代碼分析時顯示錯誤。

FindBugs錯誤:

EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS等於檢查不兼容的操作數

對於如何解決這個問題,有任何的建議嗎?

我確實做了一些調整,但無法防止出現此錯誤。

class Account extends ManagedAccount{

    String accountId;
    public void setAccount(EntityId value) {
        //some setter
    }
    void EntityId getAccountId() {
        return EntityId;//EntityId is some class
    }

    public boolean equals(Object o) {
        if (o instanceof Account) {
            if (this.getAccountId().equals(o))) {
                return super.equals(o);
            }
        }
        return false;
    }
}

可能是FindBugs在equals方法的第三行觸發:

if (this.getAccountId().equals(o)))

這里有些奇怪。 您將this.getAccountId()與整個對象o進行比較。

只需修復此行,一切都應該很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM