プロジェクトでFindBugsを実行すると、上記のエラーがいくつか発生しました。
つまり、equalsのオーバーライドバージョンは、RHSオブジェクトをオーバーライドバージョンが定義されているオブジェクトと同じタイプにキャストします。
ただし、AFAIK Javaではメソッドパラメーターの分散が許可されていないため、より良い設計が可能かどうかはわかりません。そのため、equalsパラメーターに他のタイプを定義することはできません。
私は何か非常に間違ったことをしていますか、それともFindBugsは熱心すぎますか?
この質問を表現する別の方法は次のとおりです。equalsに渡されたオブジェクトがLHSと同じタイプでない場合の正しい動作は何ですか:これはfalseですか、それとも例外があるべきですか?
例えば:
public boolean equals(Object rhs)
{
MyType rhsMyType = (MyType)rhs; // Should throw exception
if(this.field1().equals(rhsMyType.field1())... // Or whatever
}