Kotlin 數(shù)據(jù)類(data class)是一種簡化數(shù)據(jù)結(jié)構(gòu)創(chuàng)建和操作的方式
data class
關(guān)鍵字:在類前加上 data
關(guān)鍵字,可以將其聲明為數(shù)據(jù)類。數(shù)據(jù)類會自動生成一些通用方法,如 equals()
、hashCode()
和 toString()
等。data class User(val name: String, val age: Int, val address: Address)
data class Address(val street: String, val city: String, val country: String)
使用主構(gòu)造函數(shù):數(shù)據(jù)類必須有一個主構(gòu)造函數(shù),該構(gòu)造函數(shù)接收與屬性數(shù)量相同的參數(shù),并為這些參數(shù)提供類型注解。
自動生成 equals()
、hashCode()
和 toString()
方法:由于數(shù)據(jù)類包含屬性,因此它們會自動生成 equals()
、hashCode()
和 toString()
方法。這使得比較對象、將對象轉(zhuǎn)換為字符串等操作變得非常簡單。
使用解構(gòu)聲明:數(shù)據(jù)類支持解構(gòu)聲明,這意味著你可以將數(shù)據(jù)類的屬性提取到單獨的變量中。
val (name, age, address) = user
fun User.getFullName(): String {
return "$name ${address.city}"
}
copy()
函數(shù):當(dāng)你需要創(chuàng)建一個數(shù)據(jù)類的副本時,可以使用 copy()
函數(shù)。這個函數(shù)允許你修改某些屬性,同時保留其他屬性的值。val newUser = user.copy(age = user.age + 1)
toDataClass()
函數(shù):在某些情況下,你可能需要將一個復(fù)雜的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為數(shù)據(jù)類。你可以使用 toDataClass()
函數(shù)來實現(xiàn)這一目標(biāo)。val json = """{"name":"John", "age":30, "address":{"street":"Main St", "city":"New York", "country":"USA"}}"""
val user = Json.decodeFromString<User>(json)
總之,Kotlin 數(shù)據(jù)類提供了一種簡潔、易讀的方式來處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。通過自動生成的方法和擴展屬性,你可以輕松地操作和處理數(shù)據(jù)類實例。