2017-05-12 5 views
0

任意のタイプのハッシュを簡単に計算する方法を探しています。次のクラスを考える:ジェネリックタイプのハッシュコード

class Foo<T> { 
    ... 
    T value; 
} 

私はすでにvalueフィールドを比較するObjects.deepEqualsを使用してequalsメソッドをオーバーライドしています。 hashCodeで同じことを行う簡単な方法はありますか?グアバやApacheコモンズのユーティリティメソッド(私はすでに他のもののために使っています)?

値が配列の場合、残念ながらObjects.hash(field1, ... , value)は機能しません。

私は1つのオプションが

Arrays.deepHashCode(new Object[]{ field1, ... , value }); 

を行うことですが、それだけではなく、コモンズ・lang3でそれを

+3

私はちょうどvalue.equals()とvalue.hashCodeを()使用します。配列は、彼らは一般的に使用すべきではない、ジェネリックとよく合う、と彼らは代わりに、リストの(ある場合は、用はありません例)、呼び出し側は2つの異なる配列が決して等しくないことを知るべきです。例えば、List クラスを見てください。 2つのリストは、要素が等しい場合は等しくなります。要素が配列であるかどうかは気にしません。 –

+0

[AutoValue](https://github.com/google/auto/tree/master/value)をお勧めしているため、Guavaはこの問題のために何も持っていません。 –

答えて

関連する問題