Каков предпочтительный способ реализации hashCode ()?
Иногда мне нужно реализовать метод hashCode () объекта, объединив hashCodes нескольких его членов-экземпляров. Например, если комбинационный объект obj имеет члены a, b и c, я часто вижу, что ppl реализует его как
int hashCode(){
return 31 * 31 * a.hashCode() + 31 * b.hashCode() + c.hashCode();
}
Откуда это волшебное число 31? Это длина 4 байта или просто простое число?
Есть ли другой предпочтительный / стандартный способ реализации hashCode ()?