Botre Posted February 21, 2015 Share Posted February 21, 2015 (edited) LAST UPDATE: MARCH 6, 2015 http://www.javapractices.com/topic/TopicAction.do?Id=17 Please note that many IDEs offer generators for both equals() and hashCode(): The Eclipse IDE. package org.bjornkrols.templates; /** * @author Bjorn Krols (Botre) * @version 0.0 * @since March 6, 2015 */ public final class EqualsAndHashCodeTemplate { public boolean significantBoolean; public int significantInteger; private EqualsAndHashCodeTemplate() { // This class should never be instantiated. // Do not delete or make accessible. } @Override public int hashCode() { // Create an int "result" and assign a non-zero value. int result = 17; // Create an int "prime" and assign a prime value. int prime = 34; /* For every field tested in the equals-Method, calculate a hash code c by: If the field f is a boolean: calculate (f ? 0 : 1); If the field f is a byte, char, short or int: calculate (int)f; If the field f is a long: calculate (int)(f ^ (f >>> 32)); If the field f is a float: calculate Float.floatToIntBits(f); If the field f is a double: calculate Double.doubleToLongBits(f) and handle the return value like every long value; If the field f is an object: Use the result of the hashCode() method or 0 if f == null; If the field f is an array: See every field as separate element and calculate the hash value in a recursive fashion and combine the values as described next. Combine the hash value c with result with: result = prime * result + c */ result = prime * result + (significantBoolean ? 0 : 1); result = prime * result + significantInteger; return result; } @Override public boolean equals(Object object) { // Optimization for true object equality. if (object == this) { return true; } // Check if object is an instance of this class (returns false if object is null). if (!(object instanceof EqualsAndHashCodeTemplate)) { return false; } // Cast object for comparison (safe). EqualsAndHashCodeTemplate castedObject = (EqualsAndHashCodeTemplate) object; // Check if all significant fields are equal. if (castedObject.significantBoolean != this.significantBoolean) { return false; } if (castedObject.significantInteger != this.significantInteger) { return false; } return true; } } Edited March 6, 2015 by Botre Quote Link to comment Share on other sites More sharing options...
Pecman Posted February 21, 2015 Share Posted February 21, 2015 Botre4president Quote Link to comment Share on other sites More sharing options...
Botre Posted March 6, 2015 Author Share Posted March 6, 2015 Updated Quote Link to comment Share on other sites More sharing options...