Kotlin学习之数据类

作者: 程序员丶星霖 | 来源:发表于2017-11-29 09:20 被阅读112次

Kotlin学习之数据类

经常要创建一些只保存数据的类。在这些类中,一些标准函数往往是从数据机械推导而来的。在Kotlin中,这叫做数据类并标记为data

一、声明数据类

声明一个数据类的语法格式如下:

data  class  <类名>  <(主构造函数参数列表)>  [:  继承类和实现接口]  [{/*类体*/}]

主构造函数的参数列表必须使用val/var声明为类属性,而且要求至少有一个,否则无法通过编译。

二、数据类的用处

编译器自动从主构造函数中声明的所有属性导出以下成员:

  • equals()/hashCode()对;
  • toString()
  • componentN()函数按照声明顺序对应于所有属性;
  • copy()函数

为了确保生成的代码的一致性和有意义的行为,数据类必须满足以下要求:

  • 主构造函数需要至少有一个参数;
  • 主构造函数的所有参数需要标记为val或var;
  • 数据类不能是抽象、开放、密封或者内部的;
  • (1.1之前)数据类只能实现接口。

2.1复制(copy函数)

在很多情况下,需要复制一个对象改变它的一些属性,但其余部分保持不变。copy()函数就是为此而生成的。

val jack = User(name = "Jack", age = 1)
val olderJack = jack.copy(age = 2)

通过copy()函数,可以更简单地创建对象,对于那些只在某些属性上有差别的对象,可以通过“复制—>改变属性”的方式来创建。

2.2equals()和hashCode()函数

数据类会自动重写这两个方法,可以直接调用。

2.3toString()函数

数据类自动重写的toString()方法,

2.4解构函数(componentN()函数)

这里的N与主构造函数中声明的属性数是相同的,这种函数叫做解构函数。
它能够把对象的属性提取出来,并赋给一个值:

val Alex = Person("Alex", 18)
val (nameAlex, ageAlex) = Alex // nameAlex = "Alex",ageAlex = 18

这种写法可以减少代码量。

学海无涯苦作舟

我的微信公众号.jpg

相关文章

  • Kotlin学习之基础数据类型

    Kotlin学习之基础数据类型 @(Kotlin学习) Kotlin的基础数据类型包括数字类型、字符类型、字符串类...

  • Kotlin学习之数组

    Kotlin学习之数组 @(Kotlin学习) Kotlin中的数组采用Array类定义,抛弃了类C语言中“...

  • Kotlin学习之数据类

    Kotlin学习之数据类 经常要创建一些只保存数据的类。在这些类中,一些标准函数往往是从数据机械推导而来的。在Ko...

  • Kotlin for android学习四:数据类与封闭类

    前言 kotlin官网 (中文版)和kotlin教程学习教程的笔记。 一、数据类 数据类是仅仅包含状态而没有任何可...

  • Kotlin for android学习十二(布局篇):Gson

    前言 kotlin官网和[kotlin教程]学习教程的笔记。 一、json格式 二、数据类 三、请求类 这里记得添...

  • Kotlin之数据类

    数据类 数据类是一种非常强大的类,它可以让你避免创建Java中的用于保存状态但又操作非常简单的POJO的模版代码。...

  • Kotlin学历之特殊类

    简述 本次将对Kotlin中的特殊类:数据类,密封类以及伴生对象做深入的学习研究,总结优点。 数据类 通过java...

  • Kotlin学习之密封类

    Kotlin学习之密封类 密封类是Kotlin中的一个高级类,有如下特点: 密封类是为继承设计的,是一个抽象类; ...

  • Kotlin:学习笔记三

    1.引言 今天晚上学习学习下,Kotlin数据类,泛型。 2正题 2.1数据类 用关键字data修饰的class,...

  • Kotlin - Data Class

    (翻译) 学习 Kotlin - Data Class 数据类 我们经常创建一个类来保存数据。在这样的类中,一些标...

网友评论

    本文标题:Kotlin学习之数据类

    本文链接:https://www.haomeiwen.com/subject/nmqsbxtx.html