Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.cayenne.util
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 Summary
`HashCodeBuilder()` Uses two hard coded choices for the constants needed to build a `hashCode`.
`HashCodeBuilder(int initialNonZeroOddNumber, int multiplierNonZeroOddNumber)` Two randomly chosen, non-zero, odd numbers must be passed in.

Method Summary
`HashCodeBuilder` | `append(boolean value)` Append a `hashCode` for a `boolean`.
`HashCodeBuilder` | `append(boolean[] array)` Append a `hashCode` for a `boolean` array.
`HashCodeBuilder` | `append(byte value)` Append a `hashCode` for a `byte`.
`HashCodeBuilder` | `append(byte[] array)` Append a `hashCode` for a `byte` array.
`HashCodeBuilder` | `append(char value)` Append a `hashCode` for a `char`.
`HashCodeBuilder` | `append(char[] array)` Append a `hashCode` for a `char` array.
`HashCodeBuilder` | `append(double value)` Append a `hashCode` for a `double`.
`HashCodeBuilder` | `append(double[] array)` Append a `hashCode` for a `double` array.
`HashCodeBuilder` | `append(float value)` Append a `hashCode` for a `float`.
`HashCodeBuilder` | `append(float[] array)` Append a `hashCode` for a `float` array.
`HashCodeBuilder` | `append(int value)` Append a `hashCode` for an `int`.
`HashCodeBuilder` | `append(int[] array)` Append a `hashCode` for an `int` array.
`HashCodeBuilder` | `append(long value)` Append a `hashCode` for a `long`.
`HashCodeBuilder` | `append(long[] array)` Append a `hashCode` for a `long` array.
`HashCodeBuilder` | `append(Object object)` Append a `hashCode` for an `Object`.
`HashCodeBuilder` | `append(Object[] array)` Append a `hashCode` for an `Object` array.
`HashCodeBuilder` | `append(short value)` Append a `hashCode` for a `short`.
`HashCodeBuilder` | `append(short[] array)` Append a `hashCode` for a `short` array.
`HashCodeBuilder` | `appendSuper(int superHashCode)` Adds the result of super.hashCode() to this builder.
`int` | `toHashCode()` Return the computed `hashCode`.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

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

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2001-2010 Apache Cayenne. All Rights Reserved.