目录
1. 概念
Kotlin的数据类相当于Java的Bean,Java的一个类都需要写getter和setter方法,代码十分臃肿,而且每次我们添加或者修改一个成员的时候,需要改相应的代码。
public class JavaDemoBean {
private String param1;
private String param2;
public String getParam1() {
return param1;
}
public void setParam1(String param1) {
this.param1 = param1;
}
public String getParam2() {
return param2;
}
public void setParam2(String param2) {
this.param2 = param2;
}
}
---------------------
但是用数据类就非常简单,需要至少一个参数,并且所有参数都标记为var和val
data class Demo(val param1: String,val param2: String)
2. 自动生成函数
quals()/hashCode() 对;
toString();
componentN() 函数 按声明顺序对应于所有属性;
copy() 函数。
这些函数符合《effective Java》中提出的规则:equals相等性规则,覆盖了equals必须覆盖hashcode规则,规范的toString等。
3. 排除元素
如果想在自动生成的函数中排出某个属性的话,直接在类体中声明出来。
data class Demo(val param2: String){
// 排出param1
var param1: String = "";
}
4. 复制
在很多情况下,我们需要复制一个对象改变它的一些属性,但其余部分保持不变。
val jack = User(name = "Jack", age = 1)
val olderJack = jack.copy(age = 2)
他的实现是一个含有默认参数的copy函数
fun copy(name: String = this.name, age: Int = this.age) = User(name, age)