Kotlin 中的 Data Class 和 Regular Class 有什么区别?
What is the difference between Data Class and Regular Class in Kotlin?
除了编译器自动为Data生成某些函数Class之外,它们之间的根本区别是什么?
在 Kotlin 中,使用 data class
关键字声明的 类 只会生成一些额外的方法:
- 等于
- 哈希码
- toString
- 复制
- 组件X
声明常规 class
并手动定义这些方法会产生完全相同的结果。字节码级别没有其他区别。
然而,您确实有一些额外的限制(没有非 属性 构造函数参数,继承限制......),但这些只是编译时限制,因此生成的方法在 predictable/non 令人惊讶的方式。
official doc 涵盖了关于它们的所有细节。
除了编译器自动为Data生成某些函数Class之外,它们之间的根本区别是什么?
在 Kotlin 中,使用 data class
关键字声明的 类 只会生成一些额外的方法:
- 等于
- 哈希码
- toString
- 复制
- 组件X
声明常规 class
并手动定义这些方法会产生完全相同的结果。字节码级别没有其他区别。
然而,您确实有一些额外的限制(没有非 属性 构造函数参数,继承限制......),但这些只是编译时限制,因此生成的方法在 predictable/non 令人惊讶的方式。
official doc 涵盖了关于它们的所有细节。