Java FindBugs:Overrided equals()导致静态代码分析错误EQ\u CHECK\u FOR\u operator\u与\u THIS不兼容\u

Java FindBugs:Overrided equals()导致静态代码分析错误EQ\u CHECK\u FOR\u operator\u与\u THIS不兼容\u,java,overriding,equals,findbugs,Java,Overriding,Equals,Findbugs,我发现Bugs错误,我不知道如何修复。由于这是旧的遗留代码,我对此无能为力equals()实现,虽然不是完美的,但完成了它的工作,但在静态代码分析中显示了错误 FindBugs错误: EQ_CHECK_FOR_操作数_NOT_COMPATIBLE_WITH_这等于检查 不兼容操作数 有没有关于如何解决这个问题的建议 我确实做了一些调整,但无法阻止这个错误 class Account extends ManagedAccount{ String accountId; public

我发现Bugs错误,我不知道如何修复。由于这是旧的遗留代码,我对此无能为力
equals()
实现,虽然不是完美的,但完成了它的工作,但在静态代码分析中显示了错误

FindBugs错误:

EQ_CHECK_FOR_操作数_NOT_COMPATIBLE_WITH_这等于检查 不兼容操作数

有没有关于如何解决这个问题的建议

我确实做了一些调整,但无法阻止这个错误

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
进行比较


只要修好这一行,一切都会好起来。

accountId令人困惑,因为a)这里没有使用它,b)
getAccountId
返回一些其他的
EntityId
字段。为了澄清,您正在将
帐户实例(
o
)与
这个
EntityId
字段进行比较(类的名称?),这是一件非常奇怪的事情。如果(this.getAccountId().equals((Account)o.getAccountId())
,可能应该是
,尽管我仍然没有得到
accountId
/
EntityId
二分法。