標準委託
內聯類意味著類的資料會被「內聯」到該類使用的地方
適用於業務邏輯需要用到某種型別的包裝器,但是不想有額外的堆記憶體分配
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描述符標...