Kotlin
Beginner
1 min read
Data Classes Fundamentals
Example
data class Address(
val street: String,
val city: String,
val zip: String,
)
data class User(
val id: Int,
val name: String,
val email: String,
val address: Address,
)
fun main() {
val addr = Address("123 Main St", "Springfield", "12345")
val user1 = User(1, "Alice", "alice@example.com", addr)
// toString — auto-generated, deeply nested
println(user1)
// Structural equality
val user2 = User(1, "Alice", "alice@example.com", addr)
println(user1 == user2) // true
println(user1 === user2) // false — different objects
// copy — change only specific fields
val updatedUser = user1.copy(
email = "alice@newdomain.com",
address = addr.copy(city = "Shelbyville"),
)
println(updatedUser)
// Destructuring
val (id, name, email) = user1
println("id=$id name=$name email=$email")
// Works as map key (hashCode consistent with equals)
val userMap = mapOf(user1 to "active", updatedUser to "pending")
println(userMap[user2]) // active (user2 == user1)
}