Почему мой вариант не проходит валидацию? И в чем отличие методов в ответе от моего? (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));
    }

}