Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 数据类(data class)的特点与使用场景

数据类(data class)的特点与使用场景

1. 什么是数据类?

Kotlin 中的 data class 是专门用于存储数据的类,编译器会自动为其生成标准化的方法(如 equals()、hashCode()、toString()、copy() 等),从而减少样板代码。

定义语法

data class User(val name: String, val age: Int)

2. 数据类的核心特点

自动生成的方法

  1. equals() 和 hashCode()
    基于主构造函数中声明的属性比较对象内容。
  2. toString()
    格式示例:User(name=John, age=30)。
  3. copy()
    允许复制对象并修改部分属性:
    val user1 = User("John", 30)
    val user2 = user1.copy(age = 31) // 修改 age
    

其他特性

  • 主构造函数必须至少有一个参数。
  • 参数需标记为 val 或 var。
  • 不能是 abstract、open、sealed 或 inner 类。

3. 使用场景

场景 1:DTO(数据传输对象)

// 网络请求返回的 JSON 数据映射
data class ApiResponse(val success: Boolean, val data: String)

场景 2:模型类

// 数据库实体或领域模型
data class Product(val id: Int, val name: String, val price: Double)

场景 3:解构声明

数据类支持解构:

val user = User("Alice", 25)
val (name, age) = user // name = "Alice", age = 25

4. 注意事项

  1. 继承限制
    数据类不能继承其他类(但可以实现接口)。
  2. 组件函数
    编译器会为每个属性生成 componentN() 函数(用于解构)。
  3. 手动重写方法
    如需自定义行为,可显式重写 toString() 等方法。

5. 示例代码

data class Book(val title: String, val author: String, val pages: Int)

fun main() {
    val book = Book("Kotlin Guide", "Jane Doe", 200)
    println(book) // 输出: Book(title=Kotlin Guide, author=Jane Doe, pages=200)
    
    // 使用 copy 创建修改后的副本
    val updatedBook = book.copy(pages = 250)
}

总结

特性说明
自动生成方法equals, hashCode, toString, copy
适用场景DTO、模型类、解构声明
限制必须含参数,不可继承其他类

通过数据类,Kotlin 显著简化了以数据为中心的类的实现,提升开发效率。

Last Updated:: 5/21/25, 7:58 PM