🗒 Задача¶
Создай обычный класс RegularBook и data class DataBook, каждый из которых содержит два свойства: название и автор.
Создай по два экземпляра каждого класса с одинаковыми свойствами, а затем сравни их (экземпляры), используя оператор сравнения.
Выведи результат сравнения в консоль для каждой пары объектов. Объясни разницу в выводе, используя комментарий в коде.
❌ Ошибки¶
✏️ Комментарии¶
в Котлин сравнение через `equals` то же самое, что и через `==`. И так как среда разработки дополнительно сама рекомендует использовать `==`, предлагаю следовать рекомендациям.
Да все верно, если быть еще более точным - используется метод equals который по-умолчанию сравнивает ссылки на объекты.
Однако ты можешь добавить в RegularBook метод `override fun equals(other: Any?): Boolean` задав в нем код для сравнения объектов
🧾 Решение¶
class RegularBook(
val title: String,
val author: String
)
data class DataBook(
val title: String,
val author: String
)
fun main() {
val regularBook1 = RegularBook("1984", "George Orwell")
val regularBook2 = RegularBook("1984", "George Orwell")
println("Regular Books Equality: ${regularBook1 == regularBook2}") // Output: false
val dataBook1 = DataBook("1984", "George Orwell")
val dataBook2 = DataBook("1984", "George Orwell")
println("Data Books Equality: ${dataBook1 == dataBook2}") // Output: true
}
// Верно! Обычные классы сравниваются по ссылке, а data классы - по содержимому.