Sobes.tech
Junior — Middle
99

Que se passe-t-il lors de la comparaison de deux objets identiques en contenu si la méthode equals n'a pas été redéfinie dans leur classe?

Réponse de l'IA

sobes.tech IA

Если метод equals не переопределён в классе, то при сравнении двух объектов методом equals будет использоваться реализация из класса Object. По умолчанию этот метод сравнивает ссылки на объекты, то есть проверяет, указывают ли обе переменные на один и тот же объект в памяти.

Таким образом, даже если два объекта имеют одинаковое содержимое (значения полей), метод equals вернёт false, если это разные экземпляры.

Пример:

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).