我正在尝试在 Kotlin 中生成一个单例,并且遇到了问题,因为我无法智能地转换为演示者管理器是不可能的,因为实例是此时可以更改的可变属性
。
这似乎是制作单例的一种非常标准的方法。为什么它不让我,我该如何解决它?
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
}
}
}
这似乎是一个非常标准的生单胞胎的方式。
我建议你多读一些关于科特林的书。
object PresenterManager {
init {
// init code
}
fun whatever() {}
}
我上面写的是科特林的一个单身汉。现在,解释一下你得到的信息:
无法对PresenterManager进行智能强制转换,因为实例是可变属性,可能已在此时更改
实例
可为空(私有var实例:PresentManager?=null
),并且getManager
函数需要非空返回类型,因此解决此问题的多种方法之一是使getManager
返回可为空的类型(有趣的getManager(): PresentManager?
)或在返回类型上使用!
运算符。
主要的一点是,如果使用<code>对象
智能转换为“GridLayoutManager”是不可能的,因为“ViewManager”是一个可变属性,此时可能已更改 是错误,AndroidStudio显示时,试图添加一个除法器到我的回收视图。 PixelsFragment.kt 我找到了这个答案,它说这样的问题可能是因为在执行该行时变量可能碰巧为< code>null,然后他们提供了3个解决方案。然而,根据我的理解,< code>viewM
我试图得到一个类,它结合了< code>Kotlin中的列表、集合和映射。我希望编写< code>isScalar函数,如果对象只包含一个元素,它应该返回< code>true 不幸的是,相比之下,它给了我一个错误 说着 据我所知,这与多线程假设有关。在Java,如果期望多线程,我会使函数。此外,如果我不编写线程安全的,我可以完全忽略这一点。 静态编程语言应该怎么写? 我看到了这个解决方案http
我正在用kotlin为android制作一个小型tasker。我将主要活动分成一些片段,然后为每个片段创建一个视图模型。但是现在这里出现了一个问题。 下面是一些代码: 我本来希望在observer方法的帮助下在主屏幕上看到一些创建的单选按钮,但是我得到了一个例外,这在问题的标题中提到。提前感谢您的帮助!
为什么当我使用No.2脚本时Android Studio显示错误。我发现1和2之间没有区别。 请解释这个案例
我知道是可变变量,但我显式检查了并且是类型,那么为什么不能智能转换为该类型呢? 我怎样才能把它修好呢?
我尝试将我的代码从java转换为kotlin,因此我面临这个错误。我不明白为什么我会得到这个错误 错误 我只是附加给我一个错误的代码并突出显示它