Class HashCodeBuilder
- java.lang.Object
-
- org.apache.cayenne.util.HashCodeBuilder
-
public class HashCodeBuilder extends Object
Assists in implementingObject.hashCode()
methods. The code is based on HashCodeBuilder from commons-lang 2.1.- Since:
- 3.0
-
-
Constructor Summary
Constructors Constructor Description HashCodeBuilder()
Uses two hard coded choices for the constants needed to build ahashCode
.HashCodeBuilder(int initialNonZeroOddNumber, int multiplierNonZeroOddNumber)
Two randomly chosen, non-zero, odd numbers must be passed in.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description HashCodeBuilder
append(boolean value)
Append ahashCode
for aboolean
.HashCodeBuilder
append(boolean[] array)
Append ahashCode
for aboolean
array.HashCodeBuilder
append(byte value)
Append ahashCode
for abyte
.HashCodeBuilder
append(byte[] array)
Append ahashCode
for abyte
array.HashCodeBuilder
append(char value)
Append ahashCode
for achar
.HashCodeBuilder
append(char[] array)
Append ahashCode
for achar
array.HashCodeBuilder
append(double value)
Append ahashCode
for adouble
.HashCodeBuilder
append(double[] array)
Append ahashCode
for adouble
array.HashCodeBuilder
append(float value)
Append ahashCode
for afloat
.HashCodeBuilder
append(float[] array)
Append ahashCode
for afloat
array.HashCodeBuilder
append(int value)
Append ahashCode
for anint
.HashCodeBuilder
append(int[] array)
Append ahashCode
for anint
array.HashCodeBuilder
append(long value)
Append ahashCode
for along
.HashCodeBuilder
append(long[] array)
Append ahashCode
for along
array.HashCodeBuilder
append(short value)
Append ahashCode
for ashort
.HashCodeBuilder
append(short[] array)
Append ahashCode
for ashort
array.HashCodeBuilder
append(Object object)
Append ahashCode
for anObject
.HashCodeBuilder
append(Object[] array)
Append ahashCode
for anObject
array.HashCodeBuilder
appendSuper(int superHashCode)
Adds the result of super.hashCode() to this builder.int
toHashCode()
Return the computedhashCode
.
-
-
-
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 valuemultiplierNonZeroOddNumber
- 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 callingsuper.hashCode()
- Returns:
- this HashCodeBuilder, used to chain calls.
- Since:
- 2.0
-
append
public HashCodeBuilder append(Object object)
Append a
hashCode
for anObject
.- Parameters:
object
- the Object to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(long value)
Append a
hashCode
for along
.- Parameters:
value
- the long to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(int value)
Append a
hashCode
for anint
.- Parameters:
value
- the int to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(short value)
Append a
hashCode
for ashort
.- Parameters:
value
- the short to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(char value)
Append a
hashCode
for achar
.- Parameters:
value
- the char to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(byte value)
Append a
hashCode
for abyte
.- Parameters:
value
- the byte to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(double value)
Append a
hashCode
for adouble
.- Parameters:
value
- the double to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(float value)
Append a
hashCode
for afloat
.- Parameters:
value
- the float to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(boolean value)
Append a
hashCode
for aboolean
.This adds
iConstant * 1
to thehashCode
and not a1231
or1237
as done in java.lang.Boolean. This is in accordance with the Effective Java design.- Parameters:
value
- the boolean to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(Object[] array)
Append a
hashCode
for anObject
array.- Parameters:
array
- the array to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(long[] array)
Append a
hashCode
for along
array.- Parameters:
array
- the array to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(int[] array)
Append a
hashCode
for anint
array.- Parameters:
array
- the array to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(short[] array)
Append a
hashCode
for ashort
array.- Parameters:
array
- the array to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(char[] array)
Append a
hashCode
for achar
array.- Parameters:
array
- the array to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(byte[] array)
Append a
hashCode
for abyte
array.- Parameters:
array
- the array to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(double[] array)
Append a
hashCode
for adouble
array.- Parameters:
array
- the array to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(float[] array)
Append a
hashCode
for afloat
array.- Parameters:
array
- the array to add to thehashCode
- Returns:
- this
-
append
public HashCodeBuilder append(boolean[] array)
Append a
hashCode
for aboolean
array.- Parameters:
array
- the array to add to thehashCode
- Returns:
- this
-
toHashCode
public int toHashCode()
Return the computed
hashCode
.- Returns:
hashCode
based on the fields appended
-
-