Sobes.tech
Junior — Middle

Може ли да се използва методът equals без предварително да бъде пренаписан в класа?

sobes.tech AI

Отговор от 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.