Метод equals() в классе Object определяет, одинаковые ли два объекта. По умолчанию он сравнивает ссылки на объекты. Но мы переопределяем этот метод, чтобы реализовать собственную логику сравнения на основе конкретных свойств, которые важны для нашего приложения.
Представь класс Person со свойствами: имя, фамилия и возраст. По умолчанию два объекта Person равны только если они ссылаются на одно и то же место в памяти. Но ты можешь захотеть, чтобы два объекта Person считались равными, если у них одинаковые имя, фамилия и возраст, независимо от того, когда они были созданы.
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Person)) return false;
Person other = (Person) obj;
return this.firstName.equals(other.firstName) &&
this.lastName.equals(other.lastName) &&
this.age == other.age;
}
Переопределение equals() позволяет тебе определить, что означает «равенство» для твоих конкретных объектов. Это необходимо, когда тебе нужно:
Стандартная реализация equals() в классе Object выполняет сравнение по ссылке, поэтому переопределение необходимо только когда ты хочешь семантику равенства, основанную на значениях.
Новый — ещё не проверен сообществом
Вы