Kotlin類與對象——2.屬性與字段

  • 編譯器常量,已知值的屬性可以使用const修飾符標記爲編輯器常量,這些屬性需要滿足以下要求:
    1.位於頂層或者是Object聲明或companion object的一個成員
    2.以String或原生類型值初始化
    3.沒有自定義getter
  • 延遲初始化屬性和變量
    1.一般地,屬性聲明爲非空類型必須在構造函數中初始化,然而,這樣經常不方便,例如:屬性可以通過依賴注入來初始化,或是在單元測試的setup方法中初始化,這種情況下,不能再構造函數內提供一個非空初始器。但仍然想在類體中引用該屬性時避免空檢測。爲處理這種情況,可以使用lateinit修飾符標記該屬性。
    2.該修飾符只能用於在類體中的屬性(不是在主構造函數中聲明的var屬性,並且僅當該屬性沒有自定義getter或setter時)字Koltin1.2起,也用於頂層屬性與局部變量。該屬性或變量必須爲非空類型,且不能是原生類型
    3.在初始化前訪問lateinit屬性會拋出沒有初始化的異常
    4.檢測一個lateinit var是否已初始化:該屬性的引用上使用.isInitialized
class Rectangle {
    lateinit var a: Person
}

class Person

fun main(args: Array<String>) {
    if (!Rectangle::a.isLateinit) {
        println("a需要初始化")
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章