I am sure there is a good reason, but could you kindly explain why .equals() and .hashCode() do not use reflection to just "work" ?
For example in:
class Test {
Integer x = 1, y = 2;
}
Test t1 = new Test();
Test t2 = new Test();
System.out.println(t1.equals(t2)); // returns false
System.out.println(t1.hashCode() == t2.hashCode()); // returns false
I am using HashCodeBuilder and EqualsBuilder to get consistent hashes of simple objects, as in:
class Test {
Integer x = 1, y = 2;
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
}
Test t1 = new Test();
Test t2 = new Test();
System.out.println(t1.equals(t2)); // returns true
System.out.println(t1.hashCode() == t2.hashCode()); // returns true
Could you comment on whether this is the right way to do it?