【发布时间】:2022-01-16 18:22:05
【问题描述】:
我正在研究android kotlin中的创建模式(单例模式)。
我对通过伴生对象和对象制作单例对象的区别有疑问。
在某些示例中,单例是这样制作的。
class ABC {
companion object {
private var sInstance: ABC? = null
fun getInstance(): ABC {
if (sInstance == null) sInstance = ABC()
return sInstance ?: throw IllegalStateException("")
}
}
}
但是用上面的方法,
// a and b are not same object
val a = ABC()
val b = ABC.getInstance()
println(a == b) // false
但据我所知,kotlin 中的单例只是 object。
所以,我的问题是“为什么,当使用伴生对象来制作单例对象时”
【问题讨论】:
-
见this answer的前几句。这能回答你的问题吗?
-
@lucidbot // 我明白了,非常感谢 :)