您如何看待Objects#hash(Object...)
在hashCode()
方法中使用?
int a = 1;
boolean b = true;
Date c = new Date();
String d = "1234";
Object e = new ch.example.blabla.Foo();
// Java 7
public int hashCode() {
return Objects.hash(a, b, c, d, e);
}
// or using Java 6
public int hashCode() {
return Arrays.hashCode(new Object[] {a, b, c, d, e});
}
当然一般情况下也有equals(Object)
方法等。Joshua Bloch 在他的书中写道,如何hashCode()
使用他的规则/配方(例如移位等)编写一个好的方法。
上面的示例不遵循原始数据类型的这些规则......所以我的问题是,可以处理对象(自动装箱)等原始数据类型而不是遵循 Bloch 的配方或使用 Apache CommonsHashCodeBuilder
吗?
Objects#hash(Object...)
在 Java 7 中引入并且仅调用Arrays.hashCode(Object[])
,所以这个问题也针对 Java 6 用户。
感谢您的回复/想法/建议!
我真的不明白什么时候旧的问题因为新的问题而被重复关闭。
但是,这里有一个问题有更好的答案: