数据类 data class
data class 自动生成 equals/hashCode/toString/copy/componentN
数据类 data class
data class 专为持有数据而生——自动生成 equals/hashCode/toString/copy/componentN。
学完本章你将: 掌握 data class 自动方法、copy 复制、解构。
基本用法
kotlin
data class User(val name: String, val age: Int)
val u1 = User("小明", 25)
val u2 = User("小明", 25)
println(u1 == u2) // true——值相等(不是引用相等)
println(u1) // User(name=小明, age=25)
copy 复制
kotlin
val u1 = User("小明", 25)
val u2 = u1.copy(age = 26) // 只改 age
val u3 = u1.copy() // 完全复制
println(u2) // User(name=小明, age=26)
解构声明
kotlin
val user = User("小明", 25)
val (name, age) = user // component1() + component2()
println(name) // 小明
println(age) // 25
限制
kotlin
// ✅ data class 要求:
// - 主构造函数至少一个参数
// - 所有参数必须是 val 或 var
// - 不能是 abstract/open/sealed/inner
// ❌ 不能继承(但可实现接口)
data class Point(val x: Int, val y: Int) // final