我试图在Kotlin做一个单身人士并遇到问题,因为我得到了smart cast to PresenterManager is impossible because instance is mutable property that could have been changed at this time
。
这似乎是制作单身人士的一种非常标准的方法。为什么它不会让我和我如何解决它?
PresenterManager {
//some code
....
companion object {
private val PRESENTER_ID = "presenter_id"
private var instance: PresenterManager? = null
fun getManager(): PresenterManager {
if (instance == null) {
instance = PresenterManager(10, 30, TimeUnit.SECONDS)
}
return instance
}
}
}
答案 0 :(得分:1)
这似乎是制作单身人士的一种非常标准的方法。
我建议你多阅读一下Kotlin。
object PresenterManager {
init {
// init code
}
fun whatever() {}
}
我上面写的是Kotlin中的Singleton。现在,解释一下你得到的信息:
智能转换为PresenterManager是不可能的,因为实例是可变属性,此时可能已更改
instance
可以为空(private var instance: PresenterManager? = null
),而getManager
函数需要非null返回类型,因此解决此问题的方法之一是make {{1返回可以为空的类型(getManager
)或在返回类型中使用fun getManager(): PresenterManager?
运算符。
重点是,如果您使用!!
而不是instance
声明您的单身人士,则根本不需要object
变量。