Kotlin语言学习之使用data class修饰数据类对象

来源:互联网 发布:数据库漏洞扫描工具 编辑:程序博客网 时间:2024/06/11 15:16

参考地址:http://kotlinlang.org/docs/reference/data-classes.html

在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

阅读全文
1 0
原创粉丝点击