Class HashCodeBuilder


  • public class HashCodeBuilder
    extends Object
    Assists in implementing Object.hashCode() methods. The code is based on HashCodeBuilder from commons-lang 2.1.
    Since:
    3.0
    • Constructor Detail

      • HashCodeBuilder

        public HashCodeBuilder()

        Uses two hard coded choices for the constants needed to build a hashCode.

      • HashCodeBuilder

        public HashCodeBuilder​(int initialNonZeroOddNumber,
                               int multiplierNonZeroOddNumber)

        Two randomly chosen, non-zero, odd numbers must be passed in. Ideally these should be different for each class, however this is not vital.

        Prime numbers are preferred, especially for the multiplier.

        Parameters:
        initialNonZeroOddNumber - a non-zero, odd number used as the initial value
        multiplierNonZeroOddNumber - a non-zero, odd number used as the multiplier
        Throws:
        IllegalArgumentException - if the number is zero or even
    • Method Detail

      • appendSuper

        public HashCodeBuilder appendSuper​(int superHashCode)

        Adds the result of super.hashCode() to this builder.

        Parameters:
        superHashCode - the result of calling super.hashCode()
        Returns:
        this HashCodeBuilder, used to chain calls.
        Since:
        2.0
      • append

        public HashCodeBuilder append​(Object object)

        Append a hashCode for an Object.

        Parameters:
        object - the Object to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(long value)

        Append a hashCode for a long.

        Parameters:
        value - the long to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(int value)

        Append a hashCode for an int.

        Parameters:
        value - the int to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(short value)

        Append a hashCode for a short.

        Parameters:
        value - the short to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(char value)

        Append a hashCode for a char.

        Parameters:
        value - the char to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(byte value)

        Append a hashCode for a byte.

        Parameters:
        value - the byte to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(double value)

        Append a hashCode for a double.

        Parameters:
        value - the double to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(float value)

        Append a hashCode for a float.

        Parameters:
        value - the float to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(boolean value)

        Append a hashCode for a boolean.

        This adds iConstant * 1 to the hashCode and not a 1231 or 1237 as done in java.lang.Boolean. This is in accordance with the Effective Java design.

        Parameters:
        value - the boolean to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(Object[] array)

        Append a hashCode for an Object array.

        Parameters:
        array - the array to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(long[] array)

        Append a hashCode for a long array.

        Parameters:
        array - the array to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(int[] array)

        Append a hashCode for an int array.

        Parameters:
        array - the array to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(short[] array)

        Append a hashCode for a short array.

        Parameters:
        array - the array to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(char[] array)

        Append a hashCode for a char array.

        Parameters:
        array - the array to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(byte[] array)

        Append a hashCode for a byte array.

        Parameters:
        array - the array to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(double[] array)

        Append a hashCode for a double array.

        Parameters:
        array - the array to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(float[] array)

        Append a hashCode for a float array.

        Parameters:
        array - the array to add to the hashCode
        Returns:
        this
      • append

        public HashCodeBuilder append​(boolean[] array)

        Append a hashCode for a boolean array.

        Parameters:
        array - the array to add to the hashCode
        Returns:
        this
      • toHashCode

        public int toHashCode()

        Return the computed hashCode.

        Returns:
        hashCode based on the fields appended