...но обычно, если вы определяете класс, эквивалентность важнее, чем эквивалентность одного поля (a в данном случае).
Примечание: если вы переопределяете equals, вам почти всегда нужно переопределять hashCode. Как сказано в equals JavaDoc:
Обратите внимание, что обычно необходимо переопределять hashCode метод всякий раз, когда этот метод переопределяется, чтобы поддерживать общий контракт для hashCode метода, в котором говорится, что равные объекты должны иметь одинаковые хэш-коды.
Ответ 2
Вы должны переопределить equals
publicbooleanequals(Object obj) { if (this==obj) returntrue; if (this == null) returnfalse; if (this.getClass() != obj.getClass()) returnfalse; // Class name is Employ & have lastname Employeemp= (Employee) obj ; returnthis.lastname.equals(emp.getlastname()); }
Ответ 3
Лучший способ сравнить 2 объекта - преобразовать их в строки json и сравнить строки, это самое простое решение при работе со сложными вложенными объектами, полями и / или объектами, содержащими массивы.