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