Kotlin实战指南十二:data class

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/94649274
本文出自【赵彦军的博客】


前言

在 kotlin 中我们定义一个模型类,比如 User 类 ,如下

class User (var id:Int,var name:String)

如果我们要打印输出 User 对象,那么输出的是这个对象的内存地址,如果我们想输出对象的字段,需要重写 toString 方法,如下:

class User (var id:Int,var name:String){
    
    override fun toString(): String {
        return "User(id=$id, name='$name')"
    }
}

如果对象属性非常多的情况下,那么 toString 方法将变得非常臃肿,那么有没有简介的方法可以实现 toString 方法,答案是有的,那就是 data 关键字。

正文

data class算是Kotlin中一大闪光点,data class就是一个类中只包含一些数据字段,类似于vo,pojo,java bean。一般而言,我们在Java中定义了这个数据类之后要重写一下toString,equals等方法。要生成get,set方法。

然而在Kotlin中这些都不在需要自己手动去敲了,编译器在背后默默给我们生成了如下的东西:

  • equals()/hashCode()
  • toString()方法
  • componentN()方法
  • copy()方法

在申明一个 data class 有一些需要注意的事项。

  • 主构造函数必须要至少有一个参数
  • 主构造函数中的所有参数必须被标记为val或者var
  • 数据类不能有以下修饰符:abstract,inner,open,sealed
  • data class只能实现接口(Kotlin1.1以前的规则),现在也可以继承其它类

下面,我们用 data class 定义一个对象

data class User (var id:Int,var name:String)

toString()

var user = User(0,"zhaoyanjun")

Log.e("zhaoyanjun:", "toString $user")

//输出结果是:toString User(id=0, name=zhaoyanjun)

copy()

var user = User(0,"zhaoyanjun")
var user2 = user.copy(id = 2)

Log.e("zhaoyanjun:", "toString $user $user2" )

//结果:toString User(id=0, name=zhaoyanjun) User(id=2, name=zhaoyanjun)

个人微信号:zhaoyanjun125 , 欢迎关注

  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值