Равенство объектов в Java и Kotlin #kotlin Попалась интере | Android Live 🤖
Равенство объектов в Java и Kotlin
#kotlin
Попалась интересная статья, где рассматриваются отличия в работе функций проверки на равенство в двух языках.
Наиболее интересно посмотреть на кейсы, где разные подходы к проверке на равенство могут привести к плохим результатам.
Например, в Java надо быть внимательным при наследовании одного объекта от другого и их дальнейшего сравнения: в этом случае не равные по сути объекты могут оказаться равными по функции equals(). Любопытен и тот факт, что функция сравнения часто может оказаться менее производительной, чем кажется на первый взгляд.
В Kotlin было интересно посмотреть про кейс использования массивов в data-классах.
Пара выводов из этой статьи:
Проверьте, можно ли обойтись без переопределения функций equals/hashCode. Это может помочь в производительности сравнения функций.
Если надо использовать сравнение, то лучше воспользоваться data-классами. Но не стоит использовать их повсюду, ведь при это генерируется много вспомогательных функций, которые влияют на вес приложения.
Если не получается использовать принцип Composition over inheritance, то проверьте правильность использования функций equals в абстрактном и наследуемом классах.