Kotlin中Singleton的正确使用:两种调用方式该选哪一个?
两种调用方式的正确性分析
首先明确:这两种调用方式在语法和功能上都是正确的,最终都会调用到同一个单例实例的doSomeWork()方法,但从Kotlin语言设计的角度,方式2是更推荐的写法。
为什么两种方式都可行?
Kotlin中用object关键字定义的是单例对象,它在程序运行时会被自动初始化出唯一的实例。
- 方式1里的
private var prefTask: SharedPrefTask = SharedPrefTask,本质是把这个唯一的单例实例赋值给了一个变量,后续通过变量调用方法,和直接调用单例对象本身没有区别。 - 方式2则是直接通过单例对象的名称调用成员方法,这是Kotlin设计
object单例时的标准用法。
更推荐方式2的原因
- 简洁性:不需要额外声明多余的变量,减少不必要的代码。
- 可读性:直接通过对象名调用,能清晰体现这是一个单例对象的方法调用,符合Kotlin的惯用写法。
- 避免冗余:方式1的变量声明完全是多余的,因为单例本身就是全局唯一的实例,不需要再用变量持有它。
代码示例对比
方式1(合法但冗余):
private var prefTask: SharedPrefTask = SharedPrefTask prefTask.doSomeWork()
方式2(推荐写法):
SharedPrefTask.doSomeWork()
内容的提问来源于stack exchange,提问作者WISHY
相关产品推荐
相关产品推荐

