Junior — Middle
Lze metodu equals používat bez jejího předchozího přepsání ve třídě?
sobes.tech AI
Odpověď od AI
Да, метод 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.