Kotlin中的object


Kotlin中object有3种使用场景.

对象表达式

window.addMouseListener(object : MouseAdapter() {
    override fun mouseClicked(e: MouseEvent) { /*……*/ }

    override fun mouseEntered(e: MouseEvent) { /*……*/ }
})

单例对象声明

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

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

伴生对象声明

class MyClass {
    companion object Factory {
        fun create(): MyClass = MyClass()
    }
}

区别

  • 对象表达式是在使用他们的地方立即执行的(及初始化);
  • 对象声明是在第一次被访问到时延迟初始化的;
  • 伴生对象的初始化是在相应的类被加载(解析)时进行的;

文章作者: 姜康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 姜康 !
评论
 上一篇
leakcanary的自动初始化 leakcanary的自动初始化
目前v2.5版本,已经无需显式的进行初始化了. 由于Android中ContentProvider的onCreate()会在Application的onCreate()之前执行,因此可以在ContentProvider中进行初始化. 恰好有
2020-10-29
下一篇 
粗糙的谈一下Kotlin中的协程 粗糙的谈一下Kotlin中的协程
概念协程运行在协程上下文中(CoroutineContext)。 协程上下文包含一个协程调度器(CoroutineDispatcher),它可以将协程限制在一个特定的线程中执行,或者将协程分配到一个线程池中,或者让它不受限制的运行。 Cor
2020-10-29
  目录