Sobes.tech
Назад к вопросам
Junior — Middle
65

Что произойдет при сравнении двух объектов, совпадающих по содержимому, если метод equals не был переопределен в их классе?

Ответ от нейросети

sobes.tech AI

Если метод 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).