findbugsについて関連する質問をしましたが、もっと一般的な質問をしましょう。
ポリモーフィズムが可能なオブジェクト指向言語で作業していると仮定します。
言語が静的型チェック(Java、C ++など)をサポートしているとします。
言語がパラメータの分散を許可しないと仮定します(たとえば、Java、再び...)
Objectをパラメーターとして受け取る等式操作をオーバーライドする場合、パラメーターが、呼び出されたLHSと同じタイプまたはサブタイプではない状況でどうすればよいですか?
オプション1-オブジェクトが明らかに等しくないため、falseを返します
オプション2-言語が実際に分散をサポートしている場合(これが望ましい)、コンパイル時にエラーとしてキャッチされるため、キャスト例外をスローします。したがって、別のタイプが送信される状況は違法であるはずなので、実行時にこのエラーを検出することは理にかなっています。