Kotlin學習之資料類

2021-08-18 07:45:34 字數 1283 閱讀 2821

@(kotlin學習)

經常要建立一些只儲存資料的類。在這些類中,一些標準函式往往是從資料機械推導而來的。在kotlin中,這叫做資料類並標記為data

宣告乙個資料類的語法格式如下:

data  class

類名》 [: 繼承類和實現介面]

主建構函式的引數列表必須使用val/var宣告為類屬性,而且要求至少有乙個,否則無法通過編譯。

編譯器自動從主建構函式中宣告的所有屬性匯出以下成員:

- equals()/hashcode()對;

- tostring()

- componentn()函式按照宣告順序對應於所有屬性;

- copy()函式

為了確保生成的**的一致性和有意義的行為,資料類必須滿足以下要求:

- 主建構函式需要至少有乙個引數;

- 主建構函式的所有引數需要標記為val或var;

- 資料類不能是抽象、開放、密封或者內部的;

- (1.1之前)資料類只能實現介面。

2.1複製(copy函式)

在很多情況下,需要複製乙個物件改變它的一些屬性,但其餘部分保持不變。copy()函式就是為此而生成的。

val jack = user(name = "jack", age = 1)

val olderjack = jack.copy(age = 2)

通過copy()函式,可以更簡單地建立物件,對於那些只在某些屬性上有差別的物件,可以通過「複製—>改變屬性」的方式來建立。

2.2equals()和hashcode()函式

資料類會自動重寫這兩個方法,可以直接呼叫。

2.3tostring()函式

資料類自動重寫的tostring()方法,

2.4析構函式(componentn()函式)

這裡的n與主建構函式中宣告的屬性數是相同的,這種函式叫做析構函式。

它能夠把物件的屬性提取出來,並賦給乙個值:

val alex = person("alex", 18)

val (namealex, agealex) = alex // namealex = "alex",agealex = 18

這種寫法可以減少**量。

Kotlin 學習 資料類

在 kotlin 中,有乙個 data 關鍵字,來標記類,這種類一般只用來儲存資料,但是資料類必須滿足類以下條件 1.主建構函式至少有乙個引數 2.主建構函式的引數必須使用 var 或者 val 標記 3.資料類不能使抽象 開放 密封或者內部的 4.1.1以前 資料類只能實現介面 data clas...

Kotlin學習 Kotlin列舉類

列舉類最基本的用法是實現乙個型別安全的列舉。列舉常量用逗號分隔,每個列舉常量都是乙個物件 enum class color每乙個列舉都是列舉類的例項,它們可以被初始化 enum class color val rgb int 預設名稱為列舉字元名,值從0開始。若需要指定值,則可以使用其建構函式 en...

kotlin 學習筆記之 密封類

密封類用來表示受限的類繼承結構 當乙個值為有限幾種的型別 而不能有任何其他型別時。在某種意義上,他們是列舉類的擴充套件 列舉型別的值集合也是受限的,但每個列舉常量只存在乙個例項,而密封類的乙個子類可以有可包含狀態的多個例項。要宣告乙個密封類,需要在類名前面新增 sealed 修飾符。雖然密封類也可以...