KOTLIN_LIB Telegram 587
Почему не стоит использовать 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
👍3



tgoop.com/kotlin_lib/587
Create:
Last Update:

Почему не стоит использовать 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

BY Kotlin




Share with your friend now:
tgoop.com/kotlin_lib/587

View MORE
Open in Telegram


Telegram News

Date: |

Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. It’s easy to create a Telegram channel via desktop app or mobile app (for Android and iOS): In handing down the sentence yesterday, deputy judge Peter Hui Shiu-keung of the district court said that even if Ng did not post the messages, he cannot shirk responsibility as the owner and administrator of such a big group for allowing these messages that incite illegal behaviors to exist. Each account can create up to 10 public channels Some Telegram Channels content management tips
from us


Telegram Kotlin
FROM American