Android Studio隐藏错误的“可能的错误”

时间:2015-10-09 06:57:25

标签: java android android-studio ide

我在课程Finding中编写了以下等于函数:

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

tempID和permanentID都是整数。现在当我打电话给find.equals(5)时,我在检查中收到警告:

  不可转换类型'Integer'和第55行'Finding'对象之间的

'等于()'

我可以选择为语句,成员或类禁止这个。但实际上我想要对此equals函数的任何调用都禁止它。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

警告是您的equals方法不正确这一事实的副作用。根据{{​​1}} equals的合同(您要覆盖的方法),Object无法与您的Integer对象相等。

这些是equals方法的规则:

  1. 它是自反的:对于任何非空参考值x,x.equals(x) 应该回归真实。
  2. 它是对称的:对于任何非空引用 值x和y,x.equals(y)当且仅当if时才返回true y.equals(x)返回true。
  3. 它是传递性的:对于任何非空的 参考值x,y和z,如果x.equals(y)返回true和 y.equals(z)返回true,然后x.equals(z)应该返回true 4.它是一致的:对于任何非空参考值x和y,是多个 x.equals(y)的调用始终返回true或一致 如果没有在等于比较中使用的信息,则返回false 对象被修改
  4. 对于任何非空引用值x,x.equals(null)应返回false。
  5. 您最好创建一种新方法来进行上述比较,如果您保留Finding方法,则可能会得到一些奇怪的结果。