Java by API/org.apache.commons.lang.builder/HashCodeBuilder
HashCodeBuilder: reflectionHashCode(Object obj)
<source lang="java">
/* One>>>ReflectionBuilderTrial@1a1c887[
name=Becker age=35
] Two>>>ReflectionBuilderTrial@a32b[
name=Becker age=35
] Three>>>ReflectionBuilderTrial@1d8957f[
name=Agassi age=33
] one equals two? true one equals three? false One HashCode>>> 462213092 Two HashCode>>> 462213092 Three HashCode>>> -530629296
- /
import org.apache.rumons.lang.builder.EqualsBuilder; import org.apache.rumons.lang.builder.HashCodeBuilder; import org.apache.rumons.lang.builder.ToStringBuilder; import org.apache.rumons.lang.builder.ToStringStyle; public class ReflectionBuilderTrial {
private String name = null; private int age = 0; public ReflectionBuilderTrial(String name, int age) { this.name = name; this.age = age; } public static void main(String[] args) { ReflectionBuilderTrial one = new ReflectionBuilderTrial("Becker", 35); ReflectionBuilderTrial two = new ReflectionBuilderTrial("Becker", 35); ReflectionBuilderTrial three = new ReflectionBuilderTrial("Agassi", 33); System.out.println("One>>>" + one); System.out.println("Two>>>" + two); System.out.println("Three>>>" + three); System.out.println("one equals two? " + one.equals(two)); System.out.println("one equals three? " + one.equals(three)); System.out.println("One HashCode>>> " + one.hashCode()); System.out.println("Two HashCode>>> " + two.hashCode()); System.out.println("Three HashCode>>> " + three.hashCode()); } public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); }
}
</source>
new HashCodeBuilder(int initialNonZeroOddNumber, int multiplierNonZeroOddNumber)
<source lang="java">
/*
One>>>BuilderTrial@1d1acd3[ Name=Becker Age=35
] Two>>>BuilderTrial@743399[
Name=Becker Age=35
] Three>>>BuilderTrial@e7b241[
Name=Agassi Age=33
] one equals two? true one equals three? false One HashCode>>> -923455822 Two HashCode>>> -923455822 Three HashCode>>> -1433293806
*/
import org.apache.rumons.lang.builder.EqualsBuilder; import org.apache.rumons.lang.builder.HashCodeBuilder; import org.apache.rumons.lang.builder.ToStringBuilder; import org.apache.rumons.lang.builder.ToStringStyle; public class BuilderTrial {
private String name; private int age; public BuilderTrial(String name, int age) { this.name = name; this.age = age; } public static void main(String[] args) { // Create new BuilderTrial instances BuilderTrial one = new BuilderTrial("Becker", 35); BuilderTrial two = new BuilderTrial("Becker", 35); BuilderTrial three = new BuilderTrial("Agassi", 33); // one and two hold the same data in different objects // three holds different data System.out.println("One>>>" + one); System.out.println("Two>>>" + two); System.out.println("Three>>>" + three); System.out.println("one equals two? " + one.equals(two)); System.out.println("one equals three? " + one.equals(three)); // As one and two hold the same data, the same hashcode is returned. System.out.println("One HashCode>>> " + one.hashCode()); System.out.println("Two HashCode>>> " + two.hashCode()); System.out.println("Three HashCode>>> " + three.hashCode()); } public boolean equals(Object objCompared) { if (!(objCompared instanceof BuilderTrial)) { return false; } BuilderTrial rhs = (BuilderTrial) objCompared; return new EqualsBuilder().append(name, rhs.name).append(age, rhs.age).isEquals(); } public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("Name", name).append( "Age", age).toString(); } public int hashCode() { return new HashCodeBuilder(15, 19).append(name).append(age).toHashCode(); }
}
</source>