Kotlin语言学习之使用data class修饰数据类对象
参考地址:
在Kotlin语言中,想要创建那种什么都不做只持有数据的Bean类,需要使用“data class”修饰数据类对象,类似于java语言中的Bean对象。
1、创建数据类
data class User(var name: String, var age: Int)User就是一个数据类,需要在主构造函数里声明所有的属性。
2、使用数据类
// 生成数据类对象
val user = User("Tom", 20)
// val user = User(name = "Tom", age = 20)
// 设置属性值
user.name = "Jack"
user.age = 30
// 获取属性值
val name = user.name
// val name = user.component1()
val age = user.age
// val age = user.component2()
注:
(1)生成类对象可以使用上面两种方式;
(2)类对象里,有几个属性,就会有几个这个方法componentN(),比如上面的示例,user.name = user.component1();
说明:
componentN()函数对应的是声明属性时的属性。 如果从基类继承的函数或者在类主体里自定义的函数被具体定义,都不能自动产生!
为了保证生成代码的一致性和有意义的方法,数据类对象必须满足以下要求: To ensure consistency and meaningful behavior of the generated code, data classes have to fulfil the following requirements: (1)构造函数必须至少有一个参数 (2)所有的构造函数参数必须标注val或者var; (3)数据类对象不能是 abstract, open, sealed or inner; (4)数据类对象不能继承其他类,但是可以实现接口 (5)在Java虚拟机里,如果生成的类需要有一个无参数的构造函数,所有属性的默认值必须有一个具体的值,例如:
data class User(val name: String = "", val age: Int = 0)
3、复制数据类对象
使用copy方法赋值类对象,如下:
val user = User("Tom", 20)
val user2 = user.copy(age = 30)
数据类和解构声明:
数据类生成的组件功能能够在解构声明使用
val user = User("Tom", 20)
val (name, age) = user
