您如何看待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 用户。
感谢您的回复/想法/建议!
我真的不明白什么时候旧的问题因为新的问题而被重复关闭。
但是,这里有一个问题有更好的答案: