Sobes.tech
Junior — Middle

¿Se puede usar el método equals sin redefinirlo previamente en la clase?

sobes.tech AI

Respuesta de la 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.