Kotlin 数据类(Data)
Kotlin中的数据类(Data Class)是一种特殊的类,用于专门存储数据。数据类旨在减少样板代码的编写,例如toString()
、equals()
、hashCode()
以及copy()
等方法的自动生成。要定义一个数据类,只需在类声明前加上data
关键字。
数据类的特点和使用
定义
data class User(val name: String, val age: Int)
自动生成的功能
equals()
和hashCode()
- 数据类自动为主构造函数中定义的属性生成
equals()
和hashCode()
方法。这 allows you to compare instances logically rather than by reference.
- 数据类自动为主构造函数中定义的属性生成
toString()
- 自动提供一个可读的
toString()
方法,列出所有属性:
val user = User("Alice", 30)
println(user) // 输出:User(name=Alice, age=30)
- 自动提供一个可读的
copy()
- 提供
copy()
方法,可以创建对象的副本,并可选择性地修改某些属性:
val user1 = User("Alice", 30)
val user2 = user1.copy(age = 31)
println(user2) // 输出:User(name=Alice, age=31)
- 提供
componentN()
函数- 数据类自动生成
componentN()
函数,用于解构声明:
val user = User("Alice", 30)
val (name, age) = user
println(name) // 输出:Alice
println(age) // 输出:30
- 数据类自动生成
使用限制
- 主构造函数中至少必须有一个参数。
- 主构造函数的参数必须用
val
或var
修饰,以此成为类的属性。 - 数据类不能是
abstract
、open
、sealed
或者inner
类。
数据类在Kotlin中是非常实用的,尤其适用于需要简单存储和传输数据的场景。它们帮助减少样板代码,提高代码的可读性和可维护性。