Есть ли встроенная проверка контрактов в Java, например. для контракта между хэш-кодом и функцией равенства?
В этом вопросе давайте возьмем в качестве примера контракт hashcode / equals, но меня интересует проверка контрактов в целом. Я читал в нескольких местах, что равно и хэш-код должен удовлетворять «контракту» в Java:
- Равные должны соответствовать трем правилам отношения эквивалентности, а также должны быть согласованы при повторных вызовах.
- Равные объекты подразумевают одинаковые хэш-коды
Я понимаю условия, и они мне понятны. Однако мне интересно, является ли это просто контрактом, записанным на бумаге - по сути, сильным руководством для разработчиков, чтобы не писать ошибочный код - или это что-то, что будет обнаружено Java как исключение времени компиляции или выполнения?