2023-12-08|閱讀時間 ‧ 約 5 分鐘

【Kotlin 入門指南】資料類別 (Data classes)

【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_1account_2,並將 account_1 的參考指定給 account_temp。接著使用 equals() 方法比較帳戶對象是否相同,並輸出了各個帳戶對象的雜湊碼、id 和 name。

資料類別 data class 與 一般類別 class 差異

  • data class 提供了自動生成的方法,如 toString()equals()hashCode()copy(),這些對於資料的處理很方便。而一般的 class 需要手動實現這些方法。
  • class 適合於有複雜邏輯和特殊行為的情況,而 data class 更適合作為資料的容器,用來儲存和表示資料而不添加額外邏輯。
  • data class 至少需要一個主要的構造函數
  • 在一般的 class 中,屬性可以是 valvar,但並不強制。你可以自由地在 class 中聲明屬性而不必給予 valvar 關鍵字。但是 data class,在主要構造函數中聲明的參數屬性,必須使用 valvar 來明確指定其可變性,這是為了確保資料類別中的屬性是不可變 (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 資料解析成資料類別的物件。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.