Android Studio 隐藏不正确 "Probable bug"

Android Studio hide incorrect "Probable bug"

我在 class Finding 中编写了以下等式函数:

@Override
public boolean equals(Object o) {
    if (!(o instanceof Integer)) {
        return super.equals(o);
    }
    return (o.equals(permanentID) || o.equals(tempID));
}

tempID 和 permanentID 都是整数。现在,当我调用 finding.equals(5) 时,我在检查中收到警告:

'equals()' between objects of inconvertible types 'Integer' and 'Finding' at line 55

我可以选择为语句、成员或 class 抑制它。但我实际上想在任何对此 equals 函数的调用中抑制它。有什么办法吗?

该警告是您的 equals 方法不正确这一事实的副作用。根据 Objectequals 的约定(您要覆盖的方法),Integer 不可能等于您的 Finding 对象。

这些是 equals 方法的规则:

  1. 它是自反的:对于任何非空引用值x,x.equals(x) 应该 return 正确。
  2. 它是对称的:对于任何非空引用 值 x 和 y,x.equals(y) 应该 return true 当且仅当 y.equals(x) return 正确。
  3. 它是可传递的:对于任何非空 参考值 x、y 和 z,如果 x.equals(y) returns 为真且 y.equals(z) return 为真,那么 x.equals(z) 应该 return 为真 4.It 是一致的:对于任何非空引用值 x 和 y,多个 x.equals(y) 的调用一致 return 为真或一致 return false,前提是在 equals 比较中没有使用信息 对象已修改
  4. 对于任何非空参考值 x,x.equals(null) 应该 return false。

你最好创建一个新方法来进行上面的比较,如果你保持 equals 方法不变,你可能会得到一些奇怪的结果。