gpt4 book ai didi

java - 智能转换不可能,因为实例是可变属性

转载 作者:行者123 更新时间:2023-12-02 02:30:56 25 4
gpt4 key购买 nike

我正在尝试在 Kotlin 中创建一个单例,但遇到了问题,因为我得到 智能转换到 PresenterManager 是不可能的,因为实例是此时可能已更改的可变属性

这似乎是创建单例的一种非常标准的方法。为什么它不允许我,我该如何修复它?

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
}
}
}

最佳答案

This seems like a pretty standard way to make a singleton.

我确实建议您阅读更多有关 Kotlin 的内容。

object PresenterManager {
init {
// init code
}

fun whatever() {}
}

我上面写的是Kotlin中的单例。现在,解释一下您收到的消息:

smart cast to PresenterManager is impossible because instance is mutable property that could have been changed at this time

instance 可为空(private var instance: PresenterManager? = null),并且 getManager 函数需要非空返回类型,因此,解决此问题的多种方法之一是使 getManager 返回可为 null 的类型 (fun getManager(): PresenterManager?) 或使用 ! ! 返回类型上的运算符。

要点是,如果您使用对象而不是,那么您实际上根本不需要该实例变量声明你的单例。

关于java - 智能转换不可能,因为实例是可变属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47128645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com