kotlin学习day5:数据类

数据类简介

Kotlin中的数据类是一种功能强大的类,他可以让我们避免创建Java中的用于保存数据的类但又操作简单POJO模板代码。他们通常只提供了用于访问他们属性的加单的getter和setter

注:POJO是Plain OrdinaryJava Object的缩写,可以理解为简单的Java对象,即我们平时所说的JavaBean。


数据类的定义

通常使用Data关键字定义一个简单的数据类,例如我们定义一个类:


data class Article(var title: String?, var desc: String?) {

    var detailUrl: String? = null

    constructor(title: String?, desc: String?, detail: String?) : this(title, desc) {

        this.detailUrl = detail
    }

    init {

        this.title = title
        this.desc = desc
        this.detailUrl = detailUrl

    }

}

注:创建数据类的时候,我们必须要包含至少一个(var/val)元素的主要构造函数,因为你去调用copy函数复制对象的时候,实际上就是调用主要构造函数去重新创建一个数据类对象。


数据类中的一些函数和使用

除了前面说到的get和set函数,数据类中还有一些其他对我们有用的函数

  • equals:比较两个对象的属性确保他们是相同的
  • hashCode:得到一个从属性中计算出来的hash值
  • copy:复制一个对象,可以根据需要去修改一些属性

复制一个数据类

在Java中,我们常常需要去修改对象的某个或多个状态,但又不影响原来的使用,被迫的我们只能去创建一个新的对象,并赋原对象的值,修改需要改变的值,这常常是繁琐且没有意义的工作,使用Kotlin中的数据类可以帮我们高效的解决这个问题。
例如:

var article:Article = Article("NBA","LBJFAN","NBA-LBJFAN")
var article1 = article.copy("1","2")

注:copy中的参数与对应数据类主要构造函数中的属性相对应,如果想要单独修改某个属性,可使用属性名=值得方式。打印结果如下:


08-24 17:34:51.369 6630-6630/com.example.lbjfan.kotlindemo I/MainActivity: article=title:NBA-desc:LBJFAN-detail:NBA-LBJFAN
08-24 17:34:51.369 6630-6630/com.example.lbjfan.kotlindemo I/MainActivity: article1=title:1-desc:2-detail:null

映射对象到变量中

映射对象的每一个属性到一个变量中,这个过程就是我们平时所说的多声明,例如:

var (mTitle) = article //映射一个属性
var (mTitle1,mDesc) =article //映射两个属性

上面这两个多声明分别会被编译成下面的代码:

var mTitle  = article.title
var mTitle1 = article.title
var mDesc = article.detailUrl

注:当我们映射对象属性到变量中的时候,变量的个数不能超过主要构造函数中定义的属性的个数,并且映射的属性是一一对应的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值