ZonedDateTime.hashCode()
の実装がZonedDateTime.isEqual(...)
と一貫していることが保証されているのでしょうか?もしそうでなければ、そのようなハッシュコードをどのように計算できますか?この質問はMETHOD isEqual
、NOT ABOUT equals
うとしていることをZonedDateTime is isqual()と一貫性のあるhashCode()ですか?
EDIT
NOTE。それは私の質問の誤植ではありません。
EDIT#2
私はZonedDateTime
オブジェクトが含まれているクラスを持っているので、私はこれを求めていた理由があります。次のようにこのクラスの実装は、次のとおりです。
public class Foo {
private ZonedDateTime dateTime;
@Override
public boolean equals(Object obj) {
// Boilerplate stuff here...
final Foo other = (Foo)obj;
return (... && dateTime.isEqual(other.dateTime) && ...);
}
@Override
public int hashCode() {
// What do I need to put here so that my implementation of
// hashCode is consistent with my implementation of equals?
return Objects.hashCode(..., dateTime.?, ...);
}
}
あなたが実装によって見ることができるように、私が保存された回数が指すときに、2つのオブジェクトが等しい比較するために、私は、equals
の私の実装内isEqual
メソッドを呼び出しています同じ瞬間。 hashCode
の実装では、Foo
クラスがhashCode
がequals
と一致するという要件を満たすようにするにはどうすればよいですか?方法isEqual()
に関するご質問について
他に考えられる理由がありますか?それが事実なら、それは適切に文書化されるべきです。 – Tunaki
あなたは本当にこれが当てはまると思われる理由を説明する必要があります。さもなければ、質問はおそらくStackOverflowのトピック外です。 –
@fgeいいえ、言語仕様は 'hashCode'メソッドが' equals'と一貫していることを保証しています。私はそれが['isEqual'](https://docs.oracle.com/javase/8/docs/api/java/time/chrono/ChronoZonedDateTime.html#isEqual-java)と呼ばれる別の方法と一致するかどうかを尋ねています。 .time.chrono.ChronoZonedDateTime-)、これは 'equals'とは異なる結果を生成します。彼らは2つの異なる質問です。 –