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的静态成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值