data class 的优缺点:
- 优点
- 自动生成get、set 方法,减少代码编写量、更轻量级别的实体类
- 缺点
- data class 不能是内部类
- data class 不能是抽象的
- data class 不能是open的,也是不能被其他类继承,因为其本身是final 类型
由于其优点,也造成了在开发过程中有时候需要对服务器返回的值进行处理,但是由于data class类自动帮我们生成了get、set 方法,导致我们无法重写get、set方法。
一般情况有两种有效的方案:
- 将data class 修改为普通的class
@Test
fun testUser() {
var user = User()
user.passWord = "123456"
user.name = "张三"
println(user.toString())
}
class User {
var name: String = ""
get() {
return "ccc"
}
var passWord: String = ""
get() {
return "变化后ss"
}
override fun toString(): String {
return "User{${name},${passWord}}"
}
}
- 采用临时替换的方案进行处理,说白了也就是针对其值进行具体的操作处理。
@Test
fun testUser() {
var user = User("张三","123456")
println(user.toString()+user.getPassword())
}
data class User(var name: String, val passWord: String) {
fun getPassword(): String = this.passWord + "test"
}