java.lang.Object 以外の引数の型を取る equals() メソッドがあり、その包含クラスに java.lang.Object を引数の型として取る equals() のオーバーロードが他にない場合に報告します。

equals()の共変バージョンは、Object.equals(Object) メソッドをオーバーライドしません。 そのため、実行時に予期しない動作が発生する可能性があります。 たとえば、クラスが標準コレクションクラスの 1 つを構築するために使用される場合、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;
      }
  }