Комментарии 4
В interface BindingClass лучше сразу добавить override equals(item:Any) и override hashCode(item:Any), в дата классах они автоматом подхватятся, а если будет обычный класс, интерфейс заставит реализовать.
Полностью с Вами согласен, ведь с этими методами будет намного корректнее работать сравнение объектов и использование их в коллекциях, основанных на хэш-таблицах. Кроме того, добавление этих методов в интерфейс поможет обеспечить единообразие в использовании интерфейса, даже если он будет реализован обычным классом.
Спасибо за предложение. Пока что не вижу потребности в добавление здесь и сейчас этих методов, кроме как напоминалки об добавление ключевого слова data к классу. Скорее всего, в следующей версии добавлю equals.
Насчёт hashCode, в ArrayMap
хешируется ключ, а ключом у нас выступает KClass, уникальность хеша которого не зависит от data class.
И equals не обязательно добавлять, ведь можно использовать методы, которые уже есть в BindingClass
, например, прямой аналог функцияareContentsTheSame
(если не хотите использовать data class), которую можно переопределить и сравнить нужные параметры класса. Хотя напоминалка действительно удобная могла бы получиться с equals, чтобы выжать максимум из использования дефолтной реализации areContentsTheSame
.
SingleRecyclerAdapter плюс ViewBinding или зачем я написал библиотеку для списков