TGViewer
Kotlin Kotlin @kotlin_lib · 2.05K subscribers
Post #587 1.17K
Почему не стоит использовать Array в data class Kotlin:

🔸 В data class методы equals() и hashCode() генерируются автоматически на основе полей.
🔸 Но Array в Kotlin (и Java) сравнивает не содержимое, а ссылки на объекты.
🔸 Из-за этого два объекта с одинаковыми массивами будут не равны:


data class Person(val name: String, val friends: Array<String>)

val p1 = Person("Mike", arrayOf("Mary", "John", "Tom"))
val p2 = Person("Mike", arrayOf("Mary", "John", "Tom"))

println(p1 == p2) // false!


🔸 Такая «ссылочная» проверка приводит к проблемам с коллекциями (HashSet, HashMap) и к «невидимым» багам: дубликаты, неверные кеш-промахи и т. д.

✅ Решение: вместо Array используйте коллекции, которые сравнивают содержимое:


data class Person(val name: String, val friends: List<String>)


Тогда equals() проверит элементы списка по значению, и Person("Mike", listOf("Mary","John","Tom")) == Person("Mike", listOf("Mary","John","Tom")) вернёт true.

https://proandroiddev.com/avoid-using-array-in-the-data-class-constructor-in-kotlin-ebc308e46a95

✍️ @kotlin_lib
  • 👍 4
More from @kotlin_lib
  1. Aug 26, 2026🚧 Ваш Mutex тормозит корутины. Как перестать лочить и начать жить Вы пишете многопоточный…
  2. Jul 25, 2026🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.r…
  3. Jul 1, 2026🌪 Ваша дата в опасности: flatMapConcat vs Merge vs Latest Вам нужно взять поток ID-шников…
  4. Jun 24, 2026🤖 Android-приложение — это не только красивый экран. За ним стоят работа с внешним API, з…
  5. Jun 23, 2026🔮 Убийца бойлерплейта: Встречайте Context Parameters (Kotlin 2.x) Мы так привыкли к Depen…
  6. Jun 3, 2026Яндекс обновил Yandex Mobile Ads SDK для монетизации мобильных приложений — и это интересн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →