單例
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的靜態成員