Я проверял свой код на разных случаях и вроде все правильно, но при отправке не проходит по второму параметру. Я посмотрел код решения и все равно не понял. Помогите пожалуйста.
Вот код:
@Override
public boolean equals(Object ob){
if(this == ob){
return true;
}
if(ob == null){
return false;
}
if(!(ob instanceof Iphone)){
return false;
}
Iphone obj = (Iphone) ob;
if(this.price != obj.price){
return false;
}
if(this.model == null && obj.model != null) return false;
if(this.color == null && obj.color != null) return false;
return this.model.equals(obj.model) && this.color.equals(obj.color);
}
Trai Bubil
47 уровень
Почему не проходит проверка по второму параметру
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Eugene Ivaschenko
2 октября 2023, 14:23
if (obj == null || getClass() != obj.getClass()) return false;: Эта строка проверяет, что переданный объект obj не является null и принадлежит к тому же классу, что и текущий объект. Если хотя бы одно из условий не выполняется, метод сразу же возвращает false, указывая на то, что объекты не могут быть равными.
Iphone iphone = (Iphone) obj;: Здесь происходит приведение типа объекта obj к типу Iphone. Это делается, потому что obj имеет тип Object, а методы и поля класса Iphone недоступны в объектах типа Object. После этой операции можно будет использовать методы и поля Iphone.
return price == iphone.price && Objects.equals(model, iphone.model) && Objects.equals(color, iphone.color);: Эта строка сравнивает поля price, model и color текущего объекта Iphone с соответствующими полями объекта iphone, переданного в качестве аргумента.
price == iphone.price: Сравнивает цены на телефоны.
Objects.equals(model, iphone.model): Сравнивает модели телефонов. Здесь используется Objects.equals, чтобы избежать возможной ошибки при сравнении строк, если model или iphone.model равны null.
Objects.equals(color, iphone.color): Сравнивает цвета телефонов, также с использованием Objects.equals.
Если все эти условия выполняются, метод возвращает true, что означает, что объекты равны. Если хотя бы одно из условий не выполняется, метод возвращает false, указывая на то, что объекты не равны.
+1
Eugene Ivaschenko
2 октября 2023, 13:45
0
Денис Enterprise Java Developer
2 октября 2023, 13:05
Ну так а что тут непонятного, на последнем return ты получишь NPE в случае если обе модели null или оба цвета, а может и то и другое одновременно.
0
Trai Bubil
3 октября 2023, 06:20
Я об этом не подумал, спасибо
0