Class HashCodeBuilder

java.lang.Object
org.apache.cayenne.util.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 Details

    • 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 Details

    • 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