Подскажите, пожалуйста, почему в предложенном решении код
P.S. пробовал менять каждый (из трех) параметр у обоих айфонов - всегда было false, как и должно. Но, видать валидатору видней...
return price == iphone.price &&
Objects.equals(model, iphone.model) &&
Objects.equals(color, iphone.color); проходит валидацию. А мой вариантreturn price == iphone.price &&
model.equals(iphone.model) &&
color.equals(iphone.color); не проходит..((
Equails где-то успевает переопределиться, что его прям нужно явно указывать как Objects.equals() ?
Т.к. в остальном мой код идентичен предложенному решению.
P.S. пробовал менять каждый (из трех) параметр у обоих айфонов - всегда было false, как и должно. Но, видать валидатору видней...package com.javarush.task.pro.task10.task1010;
import java.util.Objects;
/*
Два айфона
*/
public class Iphone {
private String model;
private String color;
private int price;
public Iphone(String model, String color, int price) {
this.model = model;
this.color = color;
this.price = price;
}
@Override
public boolean equals(Object object) {
if (this == object) return true;
if (object == null || getClass() != object.getClass()) return false;
Iphone iphone = (Iphone) object;
return price == iphone.price && model.equals(iphone.model) && color.equals(iphone.color);
}
public static void main(String[] args) {
Iphone iphone1 = new Iphone("X", "Black", 999);
Iphone iphone2 = new Iphone("X", "Black", 999);
System.out.println(iphone1.equals(iphone2));
}
}