Для класса, поля которого являются исключительно примитивными, например:
class Foo
{
int a;
String b;
boolean c;
long d;
boolean equals(Object o)
{
if (this == o) return true;
if (!(o instanceof Foo)) return false;
Foo other = (Foo) o;
return a == other.a && b.equals(other.b) && c == other.c && d = other.d;
}
}
Это достаточно "хороший" способ записи hashCode ()
?
boolean hashCode()
{
return (b + a + c + d).hashCode();
}
То есть, Я создаю String
из тех же полей, которые использует equals ()
, а затем просто использую String # hashCode ()
.
Edit: ] Я обновил свой вопрос, добавив в него поле long
. Как следует обрабатывать long
в hashCode ()
? Просто позвольте ему переполниться int
?