做微信的网站叫什么软件,网站开发工程师应聘书范文,apt方式 安装wordpress,芜湖网站建设价格data class 介绍
kotlin 中 data class 是一种持有数据的特殊类
编译器自动从主构造函数中声明的所有属性导出以下成员#xff1a; .equals()/.hashCode() 对 .toString() 格式是 User(nameJohn, age42) .componentN() 函数 按声明顺序对应于所有属性。…data class 介绍
kotlin 中 data class 是一种持有数据的特殊类
编译器自动从主构造函数中声明的所有属性导出以下成员 .equals()/.hashCode() 对 .toString() 格式是 User(nameJohn, age42) .componentN() 函数 按声明顺序对应于所有属性。 .copy() 函数
为了确保生成的代码的一致性以及有意义的行为数据类必须满足以下要求 主构造函数需要至少有一个参数。 主构造函数的所有参数需要标记为 val 或 var。 数据类不能是抽象、开放、密封或者内部的。
val 声明的参数类似java的final data clas 里面不会有 set方法
var 声明的参数data clas 里面有 set方法
data clas 的使用
data class Person(val name: String, val age: Int)class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.main_layout)val person Person(张三丰, 122)Log.d(person, 姓名${person.name},年龄${person.age})}
}
componentN() 函数介绍
在data class主构造函数中的每个属性Kotlin会根据构造函数的个数生成相应的componentN()函数且有几个参数会生成几个componentN()函数
data class Person(val name: String, val age: Int)class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.main_layout)
// val person Person(张三丰, 122)
// Log.d(person, 姓名${person.name},年龄${person.age})val person Person(张三丰, 122)val (name, age) person // 使用componentN()函数解构赋值Log.d(person,$name is $age years old)}
}
copy 介绍
copy() 方法 copy()方法是data class提供的一个内置工具用于创建现有实例的一个副本并允许你修改部分属性值
data class Person(val name: String, val age: Int)class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.main_layout)
// val person Person(张三丰, 122)
// Log.d(person, 姓名${person.name},年龄${person.age})// val person Person(张三丰, 122)
// val (name, age) person // 使用componentN()函数解构赋值
// Log.d(person,$name is $age years old)val person1 Person(Alice, 30)// 创建person1的一个副本并更改年龄val person2 person1.copy(age 31)// person2将拥有与person1相同的name属性但age属性被更新为了31岁Log.d(person, 姓名${person2.name},年龄${person2.age})}
}
总体而言copy对于实现不可变设计模式或者需要快速创建基于已有对象的衍生版本时非常有用