Как работает equals java
Метод equals()
в Java
используется для проверки равенства двух объектов. Он наследуется из класса Object
и может быть переопределен в пользовательских классах.
Метод equals()
проверяет, являются ли два объекта равными. По умолчанию метод equals()
сравнивает два объекта по ссылке, то есть возвращает true
только в том случае, если ссылки указывают на один и тот же объект.
Чтобы сравнить объекты на основе их значений, необходимо переопределить метод equals()
в пользовательском классе. При переопределении метода equals()
необходимо учитывать следующие рекомендации:
- Сравнивать переданный объект с текущим объектом через оператор
==
и вернутьtrue
, если ссылки указывают на один и тот же объект. - Проверить, является ли переданный объект
null
, и вернутьfalse
, если переданный объект равенnull
- Проверить, является ли класс переданного объекта таким же классом, как и текущий объект, используя оператор
instanceof
- Привести переданный объект к типу текущего класса и сравнить поля текущего объекта с полями переданного объекта. Для сравнения строк можно использовать метод
equals()
Пример переопределения метода equals()
:
public class MyClass {
private int value;
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
MyClass myClass = (MyClass) obj;
return value == myClass.value;
}
}
В данном примере метод equals()
сравнивает два объекта класса MyClass
по полю value
. Если значения полей равны, метод возвращает true
, иначе - false