Kotlin學習(13):資料類
阿新 • • 發佈:2019-01-22
1、資料類的概念
在Kotlin中,我們經常建立一些儲存資料的類,我們稱之為資料類,並標記為data
:
data class User(val namne:String,val age:Int)
編譯器自動從住建構函式中宣告的所有屬性匯出一下屬性:
- equals()/hashCode()
- toString()格式是”User(name=John, age=42)”
- componentN()函式按宣告順序對應於所有屬性
- copy()函式
如果這些函式中的任何一個在類體中顯式定義或繼承其基型別,則不會生成該函式。
為了確保生成的程式碼的一致性和有意義的行為,資料類必須滿足以下要求:
- 主建構函式需要至少有一個引數
- 主建構函式的所有引數需要標記為
val
或var
- 資料類不能是抽象、開放、密封或者內部的
如果該類需要含有一個無參的建構函式,則所有的屬性必須指定預設值。
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")
}