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.