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声明中或是非内部类中。