Kotlin 類補充篇之inline 和委託

2021-09-27 11:53:14 字數 1210 閱讀 6417

標準委託

內聯類意味著類的資料會被「內聯」到該類使用的地方

適用於業務邏輯需要用到某種型別的包裝器,但是不想有額外的堆記憶體分配

1. inline 修飾類

inline class

password

(val value: string)

//使用

// 不存在 'password' 類的真實例項物件

// 將字串內聯到變數 securepassword

val securepassword =

password

("don't try this in production"

)

2. inline 類的成員
inline class

name

(val s: string)

//使用

fun main()

fun main()

//核心**在 synchronizedlazyimpl 裡

private

class

synchronizedlazyimpl

(initializer:()

-> t, lock: any?

= null)

: lazy

, serializable

return

synchronized

(lock)

else}}

override fun isinitialized()

: boolean = _value !=

= uninitialized_value}

2. 觀察委託 observable

觀察委託會給你設定預設值,當委託屬性被修改會呼叫你設定的 lambda 表示式

// 可觀察屬性

class

user}}

private fun main()

3. 屬性對映到map
//屬性委託給map 來對映, 使用於 json 或者 xml 解析成map 

//還是 gson 好使,哈哈

class

boy(val map:map>

)private fun mapdelegatedemo()

Kotlin學習之資料類

kotlin學習 經常要建立一些只儲存資料的類。在這些類中,一些標準函式往往是從資料機械推導而來的。在kotlin中,這叫做資料類並標記為data。宣告乙個資料類的語法格式如下 data class 類名 繼承類和實現介面 主建構函式的引數列表必須使用val var宣告為類屬性,而且要求至少有乙個,...

kotlin 學習筆記之 密封類

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

Kotlin學習之 5 7 封裝類

封裝類是用來表示嚴格的類層級,當乙個值可以是乙個型別集合中的任意乙個,而不是其他型別時。他們的相當於是列舉類的擴充套件,對於每乙個列舉型別的值得集合也是嚴格定義的,但是每乙個列舉常量有且僅有乙個單例,這樣乙個封裝類的子類可以有多個包含狀態的例項。要宣告乙個封裝類,需要在類名前面用sealed描述符標...