Подскажите пожалуйста, в чем мое решение существенно отличается от решения сайта? Настолько, что мое не принимается правильным
https://javarush.com/quests/lectures/questsyntaxpro.level10.lecture04 вторая задача здесь
Мое:
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Iphone iphone = (Iphone) obj;
return this.price == iphone.price && this.model.equals(iphone.model) && this.color.equals(iphone.color);
}
Чужое
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Iphone iphone = (Iphone) o;
return price == iphone.price &&
Objects.equals(model, iphone.model) &&
Objects.equals(color, iphone.color);
}
Виктор Брилько
21 уровень
В чем моя ошибка
Обсуждается
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Вадим
19 августа 2022, 20:29
В вашем варианте нет проверки полей на null. Если к примеру this.model будет равен null, то вылетит NullPointerException. Если сравнивать через Objects.equals(), то там проверка на null есть внутри
+1
Виктор Брилько
19 августа 2022, 20:53
Согласен, что их нет и они нужны, но в решении такой проверки тоже нет, значит проблема не в этом
0
Вадим
19 августа 2022, 21:25
Если бы у меня была возможность заново отправить эту задачу на проверку, то я бы кончено сказал точно, но увы такой возможности уже нет.
Так что скажу просто исходя из своего богатого опыта борьбы с валидатором - требования указанные в условии задачи почти всегда включают в себя какие-то дополнительные неявные проверки, которые валидатор не хочет озвучивать 🤯, возможно по религиозным соображениям 😅.
А иногда этот парень может не просто недоговаривать, а наоборот может даже врать, говоря что пункт выполнен, когда в реальности нет. Из-за чего можно потратить немало времени, копая не в том направлении. Но благо такое было всего пару раз)
Так что сжимаем булки покрепче и скрипя зубами работаем дальше)
Ещё не раз будет от этого валидатора пригорать, но на самом деле он наш бро 😌
+1
KIRAРазработчик в prosv.ruExpert
19 августа 2022, 21:49
Покажите что в решении в котором этой проверки нет
0
Стас ПасинковSoftware Developer в ZipyMaster
19 августа 2022, 21:50
в "правильном" решении такая проверка есть. просто неявная.
внутри метода Objects.equals() как-раз таки есть проверка на нулл обоих значений, что ему передают
+1
Виктор Брилько
20 августа 2022, 07:11
Понял, спасибо, у меня такая проверка была, как было описано в уроке, на оба поля, но ошибку тогда тоже выводило. Но тогда я еще совпадение price проверял до проверки модели и цвета, что вроде тоже результат давало правильный, но мб ругалось еще и из-за этого
if (this.model == null)
return iphone.model == null;
0