java - FindBugs:重写 equals() 导致静态代码分析错误 EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS

标签 java overriding equals findbugs

我收到 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/

相关文章:

JavaFX 8 自定义 TableCell 实现渲染三次

java - 检查 JSON 中包含键并检查 null/empty 的最佳实践?

java - XML 格式检查器返回文件过早结束。为什么?

java - 如何通过操作 ObservableList 来引发置换事件?

java - 如何重写库类的方法或分配参数值?

activerecord - 覆盖 ActiveRecord 获取 Yii 中的属性

java - 字符串 boolean 混淆

C++ 可变参数构造函数 - 传递给父构造函数

java - 如何从 EditView 检查密码?

java - Grails:检查分离的对象是否在附加的集合中