【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q
資料類別
在 Kotlin 程式語言中,資料類別 (Data classes) ,它讓你能夠輕鬆地建立和定義只用來儲存資料的類別,讓程式碼更簡潔、更容易閱讀。資料類別的主要目的是暫時保存資料,而不是處理邏輯行為。
Data class 資料類別定義範例
要建立一個資料類別,只需使用 data
關鍵字開頭,後面接類別名稱和屬性。在這個範例中,我們建立了一個名為 帳戶
的資料類別,該類別包含 帳號
和 戶名
兩個屬性,且皆是是字串資料類型。
data class Account (val id: String,val name: String)定義爲資料類別後,Kotlin 系統背後將自動生成,以下方法:
- equals()
- hashCode()
- toStringl()
- componentN()
- copy()
使用 data class 範例
fun main() {
val account_1 = Account("123456789", "HKT")
val account_2 = Account("666666", "kitty")
val account_temp = account_1
println(account_1.equals(account_2))
println(account_1.hashCode())
println(account_temp.hashCode())
println(account_2.hashCode())
println(account_1.id)
println(account_1.name)
}
輸出結果
false
-2054091236
-2054091236
-1914842213
123456789
HKT
在這個範例 main()
函數中,我們創建了兩個帳戶對象 account_1
和 account_2
,並將 account_1
的參考指定給 account_temp
。接著使用 equals()
方法比較帳戶對象是否相同,並輸出了各個帳戶對象的雜湊碼、id 和 name。
資料類別 data class 與 一般類別 class 差異
data class
提供了自動生成的方法,如toString()
、equals()
、hashCode()
和copy()
,這些對於資料的處理很方便。而一般的class
需要手動實現這些方法。class
適合於有複雜邏輯和特殊行為的情況,而data class
更適合作為資料的容器,用來儲存和表示資料而不添加額外邏輯。data class
至少需要一個主要的構造函數- 在一般的
class
中,屬性可以是val
或var
,但並不強制。你可以自由地在class
中聲明屬性而不必給予val
或var
關鍵字。但是data class
,在主要構造函數中聲明的參數屬性,必須使用val
或var
來明確指定其可變性,這是為了確保資料類別中的屬性是不可變 (val
) 或可變 (var
) 的。 data class
不可以有 open 、 abstract 、 sealed 和 inner 等修飾。
Android 相關應用
- Activity 和 Fragment 之間的傳遞:當你需要在不同的 Activity 或 Fragment 之間傳遞資料時,可以將資料封裝在一個資料類別中,並透過 Intent 或 Bundle 將其傳遞給目標 Activity 或 Fragment。
- ViewModel 和 UI 之間的傳遞:ViewModel 用於管理 UI 的資料,可以使用 LiveData 或 StateFlow 等數據流技術將資料傳遞給 UI,而這些數據可以通過資料類別進行封裝和處理。
- 呼叫網路 API,回應資料:當你使用 OkHttp、Retrofit 或其他網路庫來呼叫 API 時,資料類別可以用來表示 API 的請求和回應。從網路收到回應時,可以輕鬆地將 JSON 或 XML 資料解析成資料類別的物件。