番石榴 vs Apache Commons Hash/Equals Builders
我想知道Guava与Apache Commons在平等和hashCode构建器方面的关键区别是什么。
等于:
Apache Commons:
public boolean equals(Object obj) {
if (obj == null) { return false; }
if (obj == this) { return true; }
if (obj.getClass() != getClass()) { return false; }
MyClass other = (MyClass) obj;
return new EqualsBuilder()
.appendSuper(super.equals(obj))
.append(field1, other.field1)
.append(field2, other.field2)
.isEquals();
}
番石榴:
public boolean equals(Object obj) {
if (obj == null) { return false; }
if (obj == this) { return true; }
if (obj.getClass() != getClass()) { return false; }
MyClass other = (MyClass) obj;
return Objects.equal(this.field1, other.field1)
&& Objects.equal(this.field1, other.field1);
}
哈希代码:
Apache Commons:
public int hashCode() {
return new HashCodeBuilder(17, 37)
.append(field1)
.append(field2)
.toHashCode();
}
番石榴:
public int hashCode() {
return Objects.hashCode(field1, field2);
}
其中一个关键区别似乎是Guava版本的代码可读性得到提高。
我无法从 https://code.google.com/p/guava-libraries/wiki/CommonObjectUtilitiesExplained 找到更多信息。如果有的话,了解更多差异(特别是任何性能改进?)将是有用的。