Kotlin实战指南十二:data class
轉(zhuǎn)載請(qǐng)標(biāo)明出處:https://blog.csdn.net/zhaoyanjun6/article/details/94649274
本文出自【趙彥軍的博客】
文章目錄
- 前言
- 正文
- toString()
- copy()
前言
在 kotlin 中我們定義一個(gè)模型類,比如 User 類 ,如下
class User (var id:Int,var name:String)如果我們要打印輸出 User 對(duì)象,那么輸出的是這個(gè)對(duì)象的內(nèi)存地址,如果我們想輸出對(duì)象的字段,需要重寫 toString 方法,如下:
class User (var id:Int,var name:String){override fun toString(): String {return "User(id=$id, name='$name')"} }如果對(duì)象屬性非常多的情況下,那么 toString 方法將變得非常臃腫,那么有沒有簡介的方法可以實(shí)現(xiàn) toString 方法,答案是有的,那就是 data 關(guān)鍵字。
正文
data class算是Kotlin中一大閃光點(diǎn),data class就是一個(gè)類中只包含一些數(shù)據(jù)字段,類似于vo,pojo,java bean。一般而言,我們?cè)贘ava中定義了這個(gè)數(shù)據(jù)類之后要重寫一下toString,equals等方法。要生成get,set方法。
然而在Kotlin中這些都不在需要自己手動(dòng)去敲了,編譯器在背后默默給我們生成了如下的東西:
- equals()/hashCode()
- toString()方法
- componentN()方法
- copy()方法
在申明一個(gè) data class 有一些需要注意的事項(xiàng)。
- 主構(gòu)造函數(shù)必須要至少有一個(gè)參數(shù)
- 主構(gòu)造函數(shù)中的所有參數(shù)必須被標(biāo)記為val或者var
- 數(shù)據(jù)類不能有以下修飾符:abstract,inner,open,sealed
- data class只能實(shí)現(xiàn)接口(Kotlin1.1以前的規(guī)則),現(xiàn)在也可以繼承其它類
下面,我們用 data class 定義一個(gè)對(duì)象
data class User (var id:Int,var name:String)toString()
var user = User(0,"zhaoyanjun")Log.e("zhaoyanjun:", "toString $user")//輸出結(jié)果是:toString User(id=0, name=zhaoyanjun)copy()
var user = User(0,"zhaoyanjun") var user2 = user.copy(id = 2)Log.e("zhaoyanjun:", "toString $user $user2" )//結(jié)果:toString User(id=0, name=zhaoyanjun) User(id=2, name=zhaoyanjun)個(gè)人微信號(hào):zhaoyanjun125 , 歡迎關(guān)注
總結(jié)
以上是生活随笔為你收集整理的Kotlin实战指南十二:data class的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kotlin实战指南十一:扩展函数
- 下一篇: Kotlin实战指南十三:协程