Java FindBugs:Overrided equals()导致静态代码分析错误EQ\u CHECK\u FOR\u operator\u与\u THIS不兼容\u
我发现Bugs错误,我不知道如何修复。由于这是旧的遗留代码,我对此无能为力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
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
二分法。