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的静态成员