寻找一种方法来轻松计算任意类型的哈希值。鉴于以下课程:
class Foo<T> {
...
T value;
}
我已使用equals
覆盖Objects.deepEquals
方法来比较value
字段。是否有一种简单的方法可以对hashCode
进行相同的操作? guava或apache commons中的一些实用方法(我已经将它们用于其他事情)?
不幸的是,当值是数组时,Objects.hash(field1, ... , value)
不起作用。
我知道有一个选择是
Arrays.deepHashCode(new Object[]{ field1, ... , value });
但是为它创建一个新数组感觉不对,而不是仅仅循环它
答案 0 :(得分:1)
HashCodeBuilder.reflectionHashCode(object)
。