Kotlin 第十章:数据类
来源:互联网 发布:afnetworking上传json 编辑:程序博客网 时间:2024/06/03 19:15
Kotlin 第十章:数据类
意识到了之前的错误,抓紧时间赶紧学习,这一篇文章是数据类,在 Java 中我喜欢称之为 bean
对象,主要是是用来保存数据的,Kotlin 中的数据类和 Java 的数据类还是有所区别的。
数据类
在这样的类中一些函数只是机械的对它们持有的数据进行一些推导。在 Kotlin 中这样的类称之为 data
类,用 data
标注,下面对比一下创建一个数据类 Kotlin 和 Java 的区别:
Kotlin 创建一个 数据类:
data class User(var name: String, var age: Int, var gender: String)
Java 创建一个数据类:
public class Use { public String name; public int age; public String gender; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } @Override public String toString() { return "Use{" + "name='" + name + '\'' + ", age=" + age + ", gender='" + gender + '\'' + '}'; }}
从两段代码中可以看得出来,在 Java 中创建一个并不完善的数据里需要的代码量是很大的,但是同样的一个数据类,在 Kotlin 中只是需要一行代码就可以搞定。
如果在类中明确声明或从基类继承了比如 get、set、toString 等这些方法,编译器不会自动生成。
为确保这些生成代码的一致性,并实现有意义的行为,数据类要满足下面的要求:
注意如果构造函数参数中没有 val
或者 var
,就不会在这些函数中出现;
主构造函数应该至少有一个参数;
主构造函数的所有参数必须标注为 val 或者 var ;
数据类不能是 abstract,open,sealed,或者 inner ;
数据类不能继承其它的类(但可以实现接口)。
在 JVM 中如果构造函数是无参的,则所有的属性必须有默认的值data class User(val name: String = "", val age: Int = 0)
复制
我们经常会对一些属性做修改但想要其他部分不变。这就是 copy()
函数的由来。在上面的 User 类中,实现起来应该是这样:
fun copy(name: String = this.name, age: Int = this.age) = User(name, age)
有了 copy
我们就可以像下面这样写了:
val jack = User(name = "jack", age = 1)val olderJack = jack.copy(age = 2)
数据类和多重声明
组件函数允许数据类在多重声明中使用:
val jane = User("jane", 35)val (name, age) = janeprintln("$name, $age years of age") //打印出 "Jane, 35 years of age"
标准数据类
标准库提供了 Pair
和 Triple
。在大多数情形中,命名数据类是更好的设计选择,因为这样代码可读性更强而且提供了有意义的名字和属性。
后记
这一篇文章还是比较有用的,特别是在获取后台数据的时候,这样只需要简简单单的一行代码就可以完成一个复杂的类,所以 Kotlin 好多地方还是比较便捷的,今天的 Kotlin 数据类的学习到此告一段落,希望各位看客多多提出自己的宝贵意见。
参考
Kotlin中文文档
- Kotlin 第十章:数据类
- 《Kotlin 程序设计》第十章 Kotlin Native介绍
- Kotlin-数据类
- Kotlin -- 数据类
- Kotlin数据类(八)
- Kotlin-数据类
- kotlin学习day5:数据类
- Kotlin 从学习到 Android 第十章 扩展
- Kotlin for Android(七)Kotlin数据类和Gson
- 第十章 分组数据
- Kotlin-13.数据类(data class)
- # Kotlin学习之-5.6 数据类
- Kotlin-属性-接口-修饰符-数据类
- kotlin中的数据类data class
- Kotlin之数据类解构申明
- Kotlin Primer·第四章·Kotlin 的类(上)
- Kotlin基础教程-数据对象
- Kotlin解析数据(九)
- MySQL半同步复制--handle_slave_io线程--1
- 文章标题
- 高效学习
- Appium基础篇5-抓元素工具之UI Automator Viewer
- 计算器——第一个Android小项目
- Kotlin 第十章:数据类
- matlab画一个局部放大的图中图
- kappa系数在评测中的应用
- I/O文件的加密运算
- Halcon 提取ROI区域
- Spring 学习笔记
- 算法 第四版 2.1.25 不需要交换的插入排序
- RECOMPILE
- 【poj 1144】Network 【Central Europe 1996】