Junior — Middle
Peut-on utiliser la méthode equals sans la redéfinir préalablement dans la classe?
sobes.tech IA
Réponse de l'IA
Да, метод equals можно применять без его переопределения, так как он унаследован от класса Object. Однако в этом случае поведение метода будет стандартным: сравнение ссылок на объекты (то есть проверка, указывают ли две переменные на один и тот же объект в памяти).
Если требуется сравнивать объекты по содержимому (например, по значениям полей), то метод equals нужно переопределить в классе. Без переопределения сравнение будет работать не так, как ожидается для логически равных объектов.
Пример:
class Person {
String name;
Person(String name) { this.name = name; }
}
Person p1 = new Person("Alice");
Person p2 = new Person("Alice");
System.out.println(p1.equals(p2)); // false, если equals не переопределён
Чтобы сравнение по содержимому работало, нужно переопределить equals и hashCode.