我收到 FindBugs 错误,我很困惑如何修复。由于这是旧的遗留代码,我对此无能为力。 equals()
实现,并不完美,但完成了它的工作,但在静态代码分析时显示错误。
FindBugs 错误:
EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS Equals checks for incompatible operand
关于如何解决这个问题有什么建议吗?
我确实做了一些调整,但无法阻止这个错误。
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
进行比较。
只要修复这条线,一切都会好起来的。
关于java - FindBugs:重写 equals() 导致静态代码分析错误 EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634798/