0
任意のタイプのハッシュを簡単に計算する方法を探しています。次のクラスを考える:ジェネリックタイプのハッシュコード
class Foo<T> {
...
T value;
}
私はすでにvalue
フィールドを比較するObjects.deepEquals
を使用してequals
メソッドをオーバーライドしています。 hashCode
で同じことを行う簡単な方法はありますか?グアバやApacheコモンズのユーティリティメソッド(私はすでに他のもののために使っています)?
値が配列の場合、残念ながらObjects.hash(field1, ... , value)
は機能しません。
私は1つのオプションが
Arrays.deepHashCode(new Object[]{ field1, ... , value });
を行うことですが、それだけではなく、コモンズ・lang3でそれを
私はちょうどvalue.equals()とvalue.hashCodeを()使用します。配列は、彼らは一般的に使用すべきではない、ジェネリックとよく合う、と彼らは代わりに、リストの(ある場合は、用はありません例)、呼び出し側は2つの異なる配列が決して等しくないことを知るべきです。例えば、Listクラスを見てください。 2つのリストは、要素が等しい場合は等しくなります。要素が配列であるかどうかは気にしません。 –
[AutoValue](https://github.com/google/auto/tree/master/value)をお勧めしているため、Guavaはこの問題のために何も持っていません。 –