Просидевши минут 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"???
Вторая половина лекции просто - не о чем, можно было ничего и не писать!!! Так кинуть фразу про контракты, а вы там себе - раз*буйтесь что это и о чем!!!