object声明

单例模式是一个很有用的设计模式,Kotlin(在Scala之后)将单例模式的实现更简单。

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

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

以上的方式被称为object声明,并且总是在object关键字后紧跟名字。就像变量申明,object申明不是一个表达式,不能用在赋值表达式的右边语句。

为了指向这个引用,我们直接使用名字即可。

DataProviderManager.registerDataProvider(...)

这样的object可以有超类:

object DefaultListener : MouseAdapter() {
    override fun mouseClicked(e: MouseEvent) {
        // ...
    }

    override fun mouseEntered(e: MouseEvent) {
        // ...
    }
}

object申明不能是局部的(比如直接嵌套在函数中),但是但是它可以嵌套在其他的object声明中或是非内部类中。

results matching ""

    No results matching ""