Kotlin Data Class (資料類別)
在開發時,我們常需要建立單純用來「儲存資料」的類別 (POJO / DTO)。
在 Java 中,你得寫 toString(), equals(), hashCode(), copy()... 有夠麻煩。
在 Kotlin 中,加上 data 一個字就搞定。
定義 Data Class
data class User(val name: String, val age: Int)
限制條件:
- 主建構子至少要有一個參數。
- 主建構子的參數必須加上
val或var。 - 不能是
abstract,open,sealed,inner。
編譯器會自動幫你產生:
toString(): 輸出User(name=Miko, age=18)equals() / hashCode(): 比較內容值 (Value Equality)copy(): 複製物件componentN(): 用於解構宣告
複製物件 (copy)
當使用不可變資料 (Immutable) 時,我們常需要「修改其中一個屬性,其他不變」。
val user1 = User("Miko", 18)
val user2 = user1.copy(age = 19) // 只有 age 變了,name 還是 "Miko"
注意:
copy() 執行的是 淺層複製 (Shallow Copy)。如果屬性是用物件 (例如 List),複製出來的 List 還是指向同一個記憶體位址。解構宣告 (Destructuring)
可以把物件直接拆解成變數。
val (name, age) = user1
println("Name: $name, Age: $age")
這在處理 API 回傳資料時超級方便!