Почему мой вариант не проходит валидацию?
И в чем отличие методов в ответе от моего? (Objects.equals(model, iphone.model))
Про вот такой нюанс уже прочитал хоть и не осознал полностью. Второй день уже пытаюсь осознать это все.
"Проверьте объект на null, а также проверьте, чтобы объекты были одного типа. Не делайте проверку с помощью instanceof так как такая проверка будет возвращать true для подклассов и будет работать правильно только в случае если ваш класс объявлен как immutable. Вместо этого можно использовать getClass();"
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) { // 1. Рефлексивность. - если объект равняется самому себе return true
return true;
}
if (object == null || getClass() != object.getClass()) { // 5. Сравнение null
return false;
}
Iphone iphone = (Iphone) object;
return this.model == null || this.model.equals(iphone.model) &&
this.color == null || this.color.equals(iphone.color) &&
this.price == iphone.price;
}
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));
}
}