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 方法不正确这一事实的副作用。根据 Object
上 equals
的约定(您要覆盖的方法),Integer
不可能等于您的 Finding
对象。
这些是 equals 方法的规则:
- 它是自反的:对于任何非空引用值x,x.equals(x)
应该 return 正确。
- 它是对称的:对于任何非空引用
值 x 和 y,x.equals(y) 应该 return true 当且仅当
y.equals(x) return 正确。
- 它是可传递的:对于任何非空
参考值 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 比较中没有使用信息
对象已修改
- 对于任何非空参考值 x,x.equals(null) 应该 return false。
你最好创建一个新方法来进行上面的比较,如果你保持 equals
方法不变,你可能会得到一些奇怪的结果。
我在 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 方法不正确这一事实的副作用。根据 Object
上 equals
的约定(您要覆盖的方法),Integer
不可能等于您的 Finding
对象。
这些是 equals 方法的规则:
- 它是自反的:对于任何非空引用值x,x.equals(x) 应该 return 正确。
- 它是对称的:对于任何非空引用 值 x 和 y,x.equals(y) 应该 return true 当且仅当 y.equals(x) return 正确。
- 它是可传递的:对于任何非空 参考值 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 比较中没有使用信息 对象已修改
- 对于任何非空参考值 x,x.equals(null) 应该 return false。
你最好创建一个新方法来进行上面的比较,如果你保持 equals
方法不变,你可能会得到一些奇怪的结果。