1. 程式人生 > >Kotlin學習筆記(7)-Data Class

Kotlin學習筆記(7)-Data Class

上一篇講到了kotlin的primary constructor是如何大幅度縮減類的亢餘程式碼的,而kotlin中的Data Class,則是更進一步,完全讓以往java中編寫繁瑣的bean程式碼變成了一句就可以搞定的事情。

當然有人可能會說,就算用java,那些亢餘程式碼ide也都可以生成,這話確實沒錯,但是kotlin中的data class有一些特性是java裡面常規的bean沒有的。而且ide生成的程式碼是怎麼也比不過語法自帶的特性的。

我們先看看java bean中的一些常見的方法

equals () 進行相等測試
hashCode() 返回該物件的雜湊值,儲存到雜湊結構例如雜湊表中需要用到
toString
() 返回該物件的字串表示形式

kotlin的data class對這三個方法都提供了預設實現,基本上就和平時用ide生成的一樣,讓我們看以下一個簡單的data class

可以看到,只需要在class前加data關鍵字,就可以讓該類隱式獲得額外的方法,而三個方法的實現都是考慮了primary constructor裡的所有引數。

data class Client(val name: String, val postalCode: Int)

除此之外,data class還提供了一個copy方法
實現大概如下,類似於java的clone方法,但是因為kotlin引數預設值和命名引數的支援,所以比java的clone更加強大

class Client(val name: String, val postalCode: Int) {
...
fun copy(name: String = this.name,
postalCode: Int = this.postalCode) =
Client(name, postalCode)
}