1225. Если вы хотите переопределить equals(), какие условия должны выполняться?
Если вы хотите переопределить метод equals() в Java, то должны выполняться следующие условия:
- Рефлексивность: a.equals(a) всегда должно возвращать true, где a - это объект любого класса.
- Симметричность: Если a.equals(b) возвращает true, то b.equals(a) также должно возвращать true.
- Транзитивность: Если a.equals(b) и b.equals(c) возвращают true, то a.equals(c) также должно возвращать true.
- Консистентность: Повторный вызов a.equals(b) должен возвращать один и тот же результат, при условии, что ни a ни b не изменяются.
- Неудовлетворение null: a.equals(null) должен всегда возвращать false, где a - это объект любого класса.
Пример переопределения метода equals() для класса Person:
public class Person {
private String name;
private int age;
// Constructors, getters, setters
@Override public boolean equals(Object obj) {
if (obj == this) return true;
if (!(obj instanceof Person)) return false;
Person other = (Person) obj;
return this.name.equals(other.getName()) && this.age == other.getAge();
}
}
Этот метод проверяет, являются ли два объекта Person равными, сравнивая их имя и возраст.