Kotlin藝術探索之單例和伴生對象

單例

Kotlin中的單例寫法相比較於Java要簡單許多,只需用到一個關鍵字就能夠實現,那就是object關鍵字java

好比下面DataProviderManager就是一個單例類bash

object DataProviderManager {
    fun registerDataProvider(provider: DataProvider) {
        // ...
    }

    val allDataProviders: Collection<DataProvider>
        get() = // ...
}
複製代碼

調用單例類中的方法也很簡單ide

DataProviderManager.registerDataProvider(...)
複製代碼

調用格式很像Java的靜態類調用它的靜態方法。那麼Kotlin中的靜態類和靜態方法是否是和Java同樣呢?spa

下面就來講Kotlin中的靜態實現翻譯

伴生對象

相信你看到這個標題,也猜到Kotlin的靜態實現和Java不同了,Java的靜態實現須要用到Static關鍵字,可是Kotlin不是這樣的呢,它用的是 companion object,翻譯過來就是伴生對象code

舉個例子對象

class MyClass {
    companion object{
        fun create(): MyClass = MyClass()
        var a = 1
    }
}
複製代碼

能夠看到有一個companion object代碼塊,在這裏面能夠編寫方法和屬性,那如何調用這個類的create()方法呢?get

val instance = MyClass.create()
複製代碼

既然是和靜態方法同樣,就能夠直接類名.方法了io

注意:class

  • 每一個類能夠對應一個伴生對象
  • 伴生對象的成員全局只有一個
  • 伴生對象的成員相似於java的靜態成員
相關文章
相關標籤/搜索