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的静态成员
相关文章
相关标签/搜索