Junior — Middle
Можете ли да обясните какво означава методът equals в контекста на сравняването на обекти в Java?
sobes.tech AI
Отговор от AI
В Java методът equals се използва за сравняване на съдържанието на два обекта за равенство. По подразбиране, ако не бъде презаписан, методът equals от класа Object сравнява референциите, тоест проверява дали и двете променливи сочат към един и същи обект в паметта.
За да сравнявате обекти по стойност (например, по полетата на класа), трябва да презапишете метода equals. Важно е да спазвате контракта на метода: той трябва да бъде рефлексивен, симетричен, транзитивен, последователен и да не е равен на null.
Пример за презаписване на equals в класа Person:
public class Person {
private String name;
private int age;
@Override
public boolean equals(Object obj) {
if (this == obj) return true; // сравнение със себе си
if (obj == null || getClass() != obj.getClass()) return false;
Person other = (Person) obj;
return age == other.age && Objects.equals(name, other.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
По този начин, equals позволява сравняване на обекти по смисъл, а не по референция.