关键字 data
定义一个数据类
data class PersonD(val age : Int, val name: String,val area: String)
便可以实现 getter、setter、equals、toString等方法
自动从声明的所有属性导出以下成员:
- equals()/hashCode() 对;
- toString() 格式是 “User(name=John, age=42)”;
- componentN() 函数 按声明顺序对应于所有属性;
- copy() 函数
数据类满足条件
- 主构造函数需要至少有一个参数;
- 主构造函数的所有参数需要标记为 val 或 var;
- 数据类不能是抽象、开放、密封或者内部的;
- (在1.1之前)数据类只能实现接口
复制 copy()函数
在很多情况下,我们需要复制一个对象改变它的一些属性,但其余部分保持不变。 copy() 函数就是为此而生成。对于上文的 User 类,其实现会类似下面这样:
fun copy(name: String = this.name, age: Int = this.age) = User(name, age)
componentN
定义好了对应的component方法,可以方便的使用解构声明。
官方文档参考:地址