public class Solution {
public static void main(String[] args) {
CellPhone cellPhone1 = new CellPhone("Pineapple", "piPhone Z");
CellPhone cellPhone2 = new CellPhone("Pineapple", "piPhone Z");
if (cellPhone1.equals(cellPhone2)) {
System.out.println("телефоны одинаковые");
}
}
}
class CellPhone {
String vendor;
String model;
public CellPhone(String vendor, String model) {
this.vendor = vendor;
this.model = model;
}
@Override // вот здесь
public boolean equals(Object o) { // сравниваются ссылки на два объекта, если объекты ссылаются на два объекта, то возвращает true
if (this == o) {
return true;
}
// но что здесь? Что за null?
if (o == null || getClass() != o.getClass()) {
return false;
}
// Что делают строки ниже?
CellPhone cellPhone = (CellPhone) o;
return Objects.equals(vendor, cellPhone.vendor) &&
Objects.equals(model, cellPhone.model);
}
@Override
public int hashCode() {
return Objects.hash(vendor, model);
}
}
Савелий
1 уровень
Как работает переопределенный метод equals?
Решен
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
18 сентября 2021, 09:53
Если вызвать метод:
cellPhone1.equals(null)
- в этом случае переменная o будет null
+1