私は等号をオーバーライドするが、何のオーバーロードについては私もhasCode毎回をオーバーライドする必要があることを知っていますか?私はまだhashCodeをオーバーライドする必要がありますか?もし私がJavaでhaschodeをオーバーライドしなければならないのですか?
サイドノート:私は最初の場所で等しいが、私はまだ私はそれをオーバーロードすることを選択したい場合、私は何をすべきかを知りたいのですが、私はオーバーロードを避ける必要があることを読んだ質問を投稿する前に。
私は等号をオーバーライドするが、何のオーバーロードについては私もhasCode毎回をオーバーライドする必要があることを知っていますか?私はまだhashCodeをオーバーライドする必要がありますか?もし私がJavaでhaschodeをオーバーライドしなければならないのですか?
サイドノート:私は最初の場所で等しいが、私はまだ私はそれをオーバーロードすることを選択したい場合、私は何をすべきかを知りたいのですが、私はオーバーロードを避ける必要があることを読んだ質問を投稿する前に。
ませハッシュベースのコレクションは、今までに、過負荷状態のequals()メソッドを使用します。それはあなたの方法であり、あなたはそれが何をすべきかを決める。したがって契約は完全にあなたのものです。
しかし、私はあなたがあなたの質問に言ったことを繰り返すだろう:あなたは、最初の場所でのequals()をオーバーロードべきではありません。そうした場合、ほとんどの混乱を避けるために、少なくとも実際のequals(Object)メソッドと一貫性を持たせる必要があります。 equals()と一貫している必要があるので、equals(Object)をオーバーライドする必要があり、hashCode()もオーバーライドする必要があります。
過負荷 'equals'?あなたは*オーバーライド*を意味しましたか?あなたのユースケースはなんですか?あなたはそれをオーバーロードした場合、それは非常に異なる意味を持っている(すなわち、もはや 'Object.equals'をオーバーライドしていない、あなたのオーバーロードの方法、またhttp://stackoverflow.com/questions/12787947/overriding-object-equals-vs-見ますオーバーロード - それ)。 – Tunaki
ミスドルの質問、申し訳ありませんが、間違った重複であったとして再オープンしました。 –
@ Tunaki私は本当に等しくオーバーロードしようとしていましたが、新しいメソッドを定義していることは分かっていますが、まだオーバーライドする必要があるかどうかはわかりませんでした。 Object Iの1つは新しいhashCodeを再定義する必要があります。あなたのリンクは非常によく説明されています。オーバーロードしないようにしてください。オーバーロードが失敗した場合(コレクションで)、ありがとうございます+1 –