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

经验分享 程序员 微信小程序 职场和发展