Equals в Java: как сравнить объекты и примеры использования
Метод equals в Java используется для сравнения объектов на равенство. Этот метод является унаследованным от класса Object и может быть переопределен в пользовательском классе.
Синтаксис метода equals такой:
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != obj.getClass())
return false;
MyClass myObj = (MyClass) obj;
return Objects.equals(property1, myObj.property1) &&
Objects.equals(property2, myObj.property2);
}
Метод принимает объект, который необходимо сравнить на равенство с текущим объектом. Первым делом метод проверяет, являются ли объекты одним и тем же экземпляром (сравнивая ссылки на объекты). Если это так, то метод возвращает true. Затем метод проверяет, является ли переданный объект null или принадлежит ли он к другому классу. Если это так, то метод возвращает false. Затем метод приводит переданный объект к типу текущего класса и сравнивает свойства объектов с помощью метода equals класса Objects. Если все свойства совпадают, то метод возвращает true, иначе - false.
Пример использования метода equals:
public class MyClass {
private String name;
public MyClass(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != obj.getClass())
return false;
MyClass myObj = (MyClass) obj;
return Objects.equals(name, myObj.name);
}
public static void main(String[] args) {
MyClass obj1 = new MyClass("John");
MyClass obj2 = new MyClass("John");
MyClass obj3 = new MyClass("Mary");
System.out.println(obj1.equals(obj2)); // true
System.out.println(obj1.equals(obj3)); // false
}
}
В данном примере класс MyClass имеет одно свойство - имя. Метод equals переопределен, чтобы сравнивать объекты только по имени. В методе main создаются три объекта, и метод equals вызывается для сравнения объектов между собой. В результате сравнения объекты obj1 и obj2 равны, так как их свойства совпадают, а obj1 и obj3 не равны, так как их свойства отличаются.