🤔 Что должно быть если объект equals нал?
Метод
🚩Почему важно обрабатывать `null` в `equals()`?
🟠Контракт метода `equals()`
Согласно спецификации Java, метод
Симметричность: Если
Для
🟠Предотвращение `NullPointerException`
Если метод
🚩Как правильно реализовать метод `equals()`?
Вот стандартный способ реализации метода
🚩Что происходит, если игнорировать проверку `null`?
Если вы не проверяете
Пример с проверкой
Ставь 👍 и забирай 📚 Базу знаний
Метод
equals() в Java предназначен для проверки равенства двух объектов. Если объект, переданный в метод equals(), равен null, метод должен возвращать `false`, так как объект не может быть равен null по определению. Рассмотрим этот случай более подробно.🚩Почему важно обрабатывать `null` в `equals()`?
🟠Контракт метода `equals()`
Согласно спецификации Java, метод
equals() должен возвращать false, если объект, переданный в метод, равен null. Это необходимо для корректного сравнения объектов.Симметричность: Если
a.equals(b) возвращает true, то b.equals(a) также должно возвращать true.Для
null: Вызов x.equals(null) всегда должен возвращать false.🟠Предотвращение `NullPointerException`
Если метод
equals() не проверяет, является ли объект null, попытка доступа к его полям или методам вызовет NullPointerException.🚩Как правильно реализовать метод `equals()`?
Вот стандартный способ реализации метода
equals()@Override
public boolean equals(Object obj) {
// Проверяем, равен ли объект null
if (obj == null) {
return false;
}
// Проверяем, является ли объект тем же самым
if (this == obj) {
return true;
}
// Проверяем, принадлежит ли объект тому же классу
if (getClass() != obj.getClass()) {
return false;
}
// Приводим объект к текущему типу
MyClass other = (MyClass) obj;
// Сравниваем необходимые поля
return this.field.equals(other.field);
}
🚩Что происходит, если игнорировать проверку `null`?
Если вы не проверяете
null, код вроде следующего приведет к ошибкеMyClass obj1 = new MyClass("Hello");
MyClass obj2 = null;
System.out.println(obj1.equals(obj2)); // Если нет проверки null -> NullPointerExceptionПример с проверкой
nullclass MyClass {
private String value;
public MyClass(String value) {
this.value = value;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (getClass() != obj.getClass()) {
return false;
}
MyClass other = (MyClass) obj;
return value.equals(other.value);
}
}
public class Main {
public static void main(String[] args) {
MyClass obj1 = new MyClass("Hello");
MyClass obj2 = null;
System.out.println(obj1.equals(obj2)); // false
}
}Ставь 👍 и забирай 📚 Базу знаний
👍2