Data Class 是 Kotlin 中一种特殊类型的类,主要用于存储和操作数据。它是 Kotlin 语言为了简化数据处理而引入的一个重要特性。通过 Data Class,开发者可以更方便地创建数据模型,并自动生成一些常用的方法(如 equals、hashCode、toString 等),从而减少样板代码的编写。
1. 基本概念
Data Class 是一种用于存储数据的类。它的主要目的是封装数据,并提供对这些数据的访问和操作。与普通的类不同,Data Class 有一些特殊的功能和限制:
- 自动生成方法:Kotlin 会自动生成
equals、hashCode、toString和componentN方法。 - 不可变性:默认情况下,Data Class 的属性是不可变的(即
final),除非显式声明为var。 - 构造函数:Data Class 会自动生成主构造函数,并且可以在构造函数中直接初始化属性。
2. 语法结构
2.1 定义 Data Class
data class User(
val name: String,
val age: Int,
val email: String
)data关键字:表示这是一个 Data Class。- 属性:使用
val或var声明属性。默认情况下,属性是不可变的。 - 构造函数:Data Class 会自动生成主构造函数,并且可以在构造函数中直接初始化属性。
2.2 创建实例
val user = User("Alice", 30, "alice@example.com")3. 核心特性
3.1 自动生成的方法
Kotlin 会为 Data Class 自动生成以下方法:
equals和hashCode:- 用于比较两个对象是否相等。
- 示例:
val user1 = User("Alice", 30, "alice@example.com")
val user2 = User("Alice", 30, "alice@example.com")
println(user1 == user2) // 输出 truetoString:- 用于将对象转换为字符串表示。
- 示例:
val user = User("Alice", 30, "alice@example.com")
println(user.toString()) // 输出 User(name=Alice, age=30, email=alice@example.com)【*】解构声明
解构声明 是 Kotlin 提供的一种语法,可以将一个数据类(data class)的各个属性“一次性”拆分成多个独立的变量,而不需要显式调用各个属性的 getter。
例如,假设你有这样一个数据类:
data class Person(val name: String, val age: Int)你可以这样写:
val person = Person("Alice", 25)
// 解构声明,将 person 的属性拆分成 name 和 age 两个变量
val (name, age) = person
println("Name: $name, Age: $age")这里编译器自动调用了 person.component1() 和 person.component2() 方法,把 name 和 age 赋值给对应的变量。这就是解构声明,它让代码更简洁。
3.2 不可变性
默认情况下,Data Class 的属性是不可变的(即final)。如果需要修改属性的值,可以将属性声明为var。
data class User(var name: String, val age: Int, val email: String )// 修改属性值 user.name = "Bob"3.3 【*】复制对象
Kotlin 提供了一个copy方法,用于快速复制对象并修改部分属性。
val user = User("Alice", 30, "alice@example.com")
val newUser = user.copy(name = "Bob", age = 31)
println(newUser) // User(name=Bob, age=31, email=alice@example.com)更新: 2025-03-24 11:56:45
原文: https://www.yuque.com/dongpozhouzi-mshe3/zhm85g/aq1za171123nhcmu