如果包含类没有将 java.lang.Object 作为其参数类型的其他 equals() 重载,则报告采用 java.lang.Object 以外的参数类型的 equals() 方法。

equals() 的协变版本不会重写 Object.equals(Object) 方法。 它可能会在运行时导致意外行为。 举个例子,如果该类用于构造一个标准集合类,该集合类预期会重写 Object.equals(Object) 方法。

示例:


  class Foo {
      public boolean equals(Foo foo) {  // 警告
          return false;
      }
  }
  class Bar {
      public boolean equals(Bar bar) {  // 此处无警告
          return false;
      }
      @Override
      public boolean equals(Object obj) {
          return false;
      }
  }