功能
-
自动声明与构造函数入参同名的属性字段
-
自动实现每个属性字段的get/set方法
-
自动提供equals方法,比较两个数据对象是否相等
-
自动提供copy方法,允许完整复制某个数据对象
-
提供toString方法
约束条件
-
数据类必须有主构造函数,且至少一个输入参数
-
声明与输入参数同名的属性,即输入参数前面添加关键字val或者var
-
数据类不能是基类也不能是子类,不能是抽象类,不能是内部类,不能是密封类
实例
data class User(
var name: String,
var age: String,
var address: String
)
调用
private var cCount = 0
private fun getUser() {
var user = User("测试", "11", "北京")
var userCopy = user.copy()
btn_class_data.setOnClickListener { v ->
userCopy = when (cCount % 2) {
0 -> user.copy(age = "11")
else -> user.copy(age = "12")
}
cCount++
var result = if (user.equals(userCopy)) "=" else "!="
text_class_data.text = "结果$result \n"+ "第一是$user \n"+"第二是$userCopy"
}
}
作者:wanTag
链接:https://www.jianshu.com/p/b20a82f4dad9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。