java - Android Studio 隐藏不正确的 "Probable bug"

标签 java android android-studio ide

我在 Finding 类中编写了以下 equals 函数:

@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

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

最佳答案

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

这些是 equals 方法的规则:

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

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

关于java - Android Studio 隐藏不正确的 "Probable bug",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33031819/

相关文章:

java - JButton ActionListener 一般查询

android - adb devices 命令和 eclipse 无法识别我的索尼爱立信 xperia x10

android - 将 ImageView 放置在居中按钮的左侧

java - 转储 "real-world"场景以进行单元测试

java - android studio 执行失败,因为 idk-1.8 的任务进程异常

android - 即使应用程序未在 Cordova 中运行,如何每 5 分钟获取一次地理定位

android - 渲染移动端 chrome 和 android 原生浏览器的差异

Android Studio 错误 "Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8"

android - 自定义 SimpleCursorAdapter 和 BindView(按钮随机不可见)

java - 强制具有 AllocationSize 的 TableGenerator 跳到下一个间隔