これらのメソッドをjava.lang.Objectに含める理由は何ですか?平等とハッシュは多くのクラスにとって意味がありません。ObjectでequalsとhashCodeが定義されているのはなぜですか?
2つのインターフェイスを作るために、より論理的な次のようになります。
はinterface Equalable {
boolean equals(Equalable other);
}
interface Hashable extends Equalable {
int hashCode();
}
例えばHashSetの定義は、それが一般的な初心者のミスのいずれかを妨げる
class HashSet<T extends Hashable> ...
のように見えるかもしれません - せずにアイテムのセットを使用してequals/hashCodeを実装しています。
何かの良い記事を見てください[http://msmvps.com/blogs/jon_skeet/archive/2008/12/05/redesigning-system-object-java-lang-object.aspx] (Jon Skeetによる)。 –
リンクが切れているようです。 [This](http://codeblog.jonskeet.uk/2008/12/05/redesigning-system-object-java-lang-object/)は同じ記事かもしれません。 – tkokasih