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;
}
}