package com.cattong.commons.util;
import java.util.Arrays;
public final class HashCodeHelper {
private static final int multiplierNum = 37;
private int hashCode;
private HashCodeHelper() {
this(17);
}
private HashCodeHelper(int hashCode) {
this.hashCode = hashCode;
}
public static HashCodeHelper getInstance() {
return new HashCodeHelper();
}
public static HashCodeHelper getInstance(int hashCode) {
return new HashCodeHelper(hashCode);
}
public HashCodeHelper appendByte(byte val) {
return appendInt(val);
}
public HashCodeHelper appendShort(short val) {
return appendInt(val);
}
public HashCodeHelper appendChar(char val) {
return appendInt(val);
}
public HashCodeHelper appendLong(long val) {
return appendInt((int) (val ^ (val >>> 32)));
}
public HashCodeHelper appendFloat(float val) {
return appendInt(Float.floatToIntBits(val));
}
public HashCodeHelper appendDouble(double val) {
return appendLong(Double.doubleToLongBits(val));
}
public HashCodeHelper appendBoolean(boolean val) {
return appendInt(val ? 1 : 0);
}
public HashCodeHelper appendObj(Object... val) {
return appendInt(Arrays.deepHashCode(val));
}
public HashCodeHelper appendInt(int val) {
hashCode = hashCode * multiplierNum + val;
return this;
}
public int getHashCode() {
return this.hashCode;
}
}