1. 程式人生 > >Kotlin學習(13):資料類

Kotlin學習(13):資料類

1、資料類的概念

在Kotlin中,我們經常建立一些儲存資料的類,我們稱之為資料類,並標記為data

data class User(val namne:String,val age:Int)

編譯器自動從住建構函式中宣告的所有屬性匯出一下屬性:

  • equals()/hashCode()
  • toString()格式是”User(name=John, age=42)”
  • componentN()函式按宣告順序對應於所有屬性
  • copy()函式

如果這些函式中的任何一個在類體中顯式定義或繼承其基型別,則不會生成該函式。

為了確保生成的程式碼的一致性和有意義的行為,資料類必須滿足以下要求:

  • 主建構函式需要至少有一個引數
  • 主建構函式的所有引數需要標記為valvar
  • 資料類不能是抽象、開放、密封或者內部的

如果該類需要含有一個無參的建構函式,則所有的屬性必須指定預設值。

data class User(val name: String = "", val age: Int = 0)

2、複製

在很多情況下,我們需要複製一個物件改變它的一些屬性,但其餘部分保持不變。copy()函式就是為此而生成。

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

3、資料類和解構宣告

為資料類生成的Component函式使它們可在解構宣告中使用:

fun main(args: Array<String>) {
    val jane = User("Jane", 35)
    val (name, age) = jane
    println("$name,$age years of age")
}