Просидевши минут 5 в ступоре от задания "Написать свой hashCode()"... Как я понял с лекции - это делается сравнивая первые символы слов/цифр/еще.чего-то, которые нужно сравнить!? Подумав, что я то могу наверное подобное проделать... Но как-то мне смутно подсказала интуиция - "валидатор" другое что-то от меня ждет, и решил я глянуть правильный ответ...
@Override
    public int hashCode() {
        return Objects.hash(model, year);
Как мне понимать что тут произошло? Я то понимаю что тут переопределяют дефолтный метод Object... Но что это за метод "Objects.hash", а именно этот "hash" - про него нет не слова в лекции? Почему "int hashCode()" - "int", если одна из переменных "String"(model)??? - Об этом толком тоже ничего! Я то видел в описании "hashCode", что он сравнивает некое число-аналог буквы... Но о чем это мне говорит - не о чем!!! Это как то не объясняет - почему именно "int", как и что-то другое, в этой статье - не объясняет тоже... И самое главное - как нулевой человек в программировании должен прийти к этому решению, исходя с этой "очень объемной"(ОЧЕНЬ) информации про "hashCode()"? И учитывая, что надо переопределять дефолтный метод Object, я понял только после прочтения следующей(ниже!) части лекции... А если бы не прочел - то воспринимал бы это как очередной самостоятельно-написанный обычный метод, я вообще не подумал бы про это... Как вот это "Напиши свою реализацию hashCode, используя переменные model и year." превращается в вот это "@Override"??? Вторая половина лекции просто - не о чем, можно было ничего и не писать!!! Так кинуть фразу про контракты, а вы там себе - раз*буйтесь что это и о чем!!!