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

單例

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

比如下面DataProviderManager就是一個單例類

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

    val allDataProviders: Collection<DataProvider>
        get() = // ...
}

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

DataProviderManager.registerDataProvider(...)

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

下面就來說Kotlin中的靜態實現

伴生對象

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

舉個例子

class MyClass {
    companion object{
        fun create(): MyClass = MyClass()
        var a = 1
    }
}

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

val instance = MyClass.create()

既然是和靜態方法一樣,就可以直接類名.方法了

注意:

  • 每個類可以對應一個伴生對象
  • 伴生對象的成員全局只有一個
  • 伴生對象的成員類似於java的靜態成員
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章