Всем привет, сам не решил, полез в решение, и меня смущает строка 32.
в 31 строке мы присваем класс Iphone нашему объекту о и называем его iphone. ок
в 32 строке цена == цене айфона ок, вопросов нет это тип int всё так и сравнивается, но что такое Objects.equals(model, iphone.model) ? что за метод Objects а не Object ? и вообще не понимаю почему String значения model и color сравниваются через objects.equal.
все за помощь плюсик в карму)
Oleksandr Lysykh
26 уровень
Objects.equals(model, iphone.model)
Обсуждается
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Антон Власов
24 ноября 2021, 08:41
синтаксис в этой строчке такой: есть класс Objects у него вызывается метод сравнения двух объектов equals(), этот метод "умеет" корректно сравнивать объекты. То, как сравниваются объекты Вы должны были уже изучить (например операция == в общем случае ни к чему хорошему не приведет, т.к. например строки в этом случае будут равны если их ссылки равны (как устроен тип String тоже было), но тогда это один и тот же объект, а Вам скорее всего хотелось бы проверить равны ли значения их полей (содержимое строк). В том числе этот метод умеет корректно сравнить строки. Поэтому чтобы самостоятельно не писать алгоритм сравнения строк удобно в данном случае использовать метод класса.
+1
Антон Власов
24 ноября 2021, 08:44
Можете попробовать написать свой метод сравнения строк и сразу будет понятно что упрощается.
+1
Антон Власов
24 ноября 2021, 08:51
https://javarush.com/groups/posts/equals-java-sravnenie-strok очень хорошая статья конкретно про этот момент. Заметьте - equals в более общем классе Object относительно класса Objects существует, но нуждается в переопределении ручками для правильной работы. Вот это и было сделано в младшем классе наследнике.
+2
Кирилл
9 февраля, 03:46
Так в исходной задаче про айфоны и нужно написать свой алгоритм сравнения, нет? с переопределением метода equals
0
Orofer
19 ноября 2021, 09:12
Objects это класс, на который тебе скинули ссылку) и соответственно если в стринговые значения, которые также входят в Objects, то и сравниваем их через objects.equal. полагаю немного дальше прочтя и тебе и мне станет понятно, что "так тоже можно", хотя для нынешнего уровня нам сложно это понять, будем надеяться, что таким способом нас заставляют читать исходники для понимания всего происходящего, а не просто смеются над нашими нынешними знаниями.
0
KIRAExpert
19 ноября 2021, 09:06
Objects (с большой буквы) - это класс
This class consists of static utility methods for operating on objects. These utilities include null-safe or null-tolerant methods for computing the hash code of an object, returning a string for an object, and comparing two objects.
https://docs.oracle.com/javase/8/docs/api/java/util/Objects.html#equals-java.lang.Object-java.lang.Object-
+3
Oleksandr Lysykh
19 ноября 2021, 09:26
перед созданием вопроса я погуглил, и прочитал статьи на джаве раше, как правильно решать знаю, но почему Джава раш предлагает решиать через Objects, к сожалению ваш ответ не помог мне понять разницу между классами Object и Objects и почему в решении предлагают сравнение через метод equals класса Objects
+2
KIRAExpert
19 ноября 2021, 09:46
Objects это класс в котором реализованы статические методы для работы с объектами.
почему в решении предлагают сравнение через метод equals класса Objects
Представим класс телефона с одним полем название
Как бы вы реализовали equals
+1