Два айфона

  • 11
  • Недоступна
В методе main создаются два айфона с одинаковыми параметрами. В консоли выводится результат их сравнения. Разберись, почему сейчас результат отрицательный и сделай так, чтобы он был положительным. Для этого тебе нужно переопределить метод equals(Iphone), который будет учитывать все параметры. У двух
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (115)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #3137888
Уровень 2
вчера, 06:05
В книге К. Хорстманна "Библиотека профессионала" приведен наиболее корректный вариант переопределения метода equals(Object) с использованием суперкласса Object, с развернутыми комментариями. Можно получить понимание того, что и почему происходит в коде задачи
Anonymous #3119894
Уровень 13, Москва, Russian Federation
5 августа, 11:09
Видимо только для jdk 8 . В более современных jdk правильное решение не работает
Dregid
Уровень 14, Омск, Russian Federation
6 августа, 04:14
У меня на 17 все работает...
Александр
Уровень 12, Санкт-Петербург
1 августа, 10:53
После этой задачи я не заходил обратно достаточно долго, так как понял, что я туплю жёстко в этой задаче. Потом посмотрел верное решение, вставил его в код. И он всё равно всегда показывает true, даже если изменить значения в одном из объектов Iphone. Я сломал Javу или верное решение не работает? 🤔
Слава
Уровень 12, Москва, Russian Federation
31 июля, 19:30
А где в правильном решении проверки параметров obj и this, что они не равны null? Если в них введен null, то код не компилируется. + без этих проверок мое решение тоже не пропускалось.
slar69
Уровень 16, Москва, Russian Federation
19 июля, 09:32
Если убрать условие || getClass() != o.getClass() валидатор все равно ответ принимает. Отсюда вопрос. За каким хреном оно нужно?
Марк
Уровень 15, Москва, Россия
17 июля, 22:00
Решил, просто по шаблону из лекции, но 80% того что я сделал я не понял. Это очень плохо ? 🤕
Никита Ильин
Уровень 28, Вязьма, Russian Federation
8 июля, 13:49
Я тут один гений, который переписал полностью метод Objects.equals, потому что не знал, что такое существует?)))
Tenth11
Уровень 14
29 июня, 11:03
Сначала напрёгся, потом оказалось что Ctrl-C, Ctrl-V из лекции и расставить имена переменных какие надо. Потом посмотрел правильное решение и какая-то каша, зачем так усложнять?)
Максим Воробьёв
Уровень 12, Russian Federation
21 июня, 14:36
Зачем проверка на null если model или color будут null то выдает true?
Tomhetted
Уровень 17, Санкт-Петербург , Россия
18 июня, 13:47
почему...
return this.model == iphone.model && this.color == iphone.color && this.price == iphone.price;
...верный вариант, а...
return this.model.equals(iphone.model) && this.color.equals(iphone.color) && this.price == iphone.price;
...валидатор не пускает?
Evgeniy Kirgovec
Уровень 26, Москва, Russian Federation
28 июня, 20:08
Первый вариант не правильный потому что нельзя сравнивать String через ==, а второй вариант не подходит видимо потому что в одним из значений может быть null, а значит нельзя использовать equals. Но это догадка потому что в лекции были такие слова: 1. "Во-первых, поле name имеет тип String, а значит, поля name нужно сравнивать с помощью вызова метода equals" 2. Во-вторых, поле name вполне себе может быть равным null: тогда вызвать метод equals у него нельзя. Нужна дополнительная проверка на null