我想知道如何在 Kotlin 中创建一个单例类,以便我的 Util 类在每次应用程序执行时只实例化一次。但是,当我将 Java 类转换为 kotlin 时,生成了以下代码。
这个对吗?
companion object {
private var utilProject: UtilProject? = null
val instance: UtilProject
get() {
if (utilProject == null) utilProject = UtilProject()
return utilProject!!
}
}
我可以找到一个相关的 问题,但它是带参数的,没有参数我不会让它转换。
原文由 Khemraj Sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议
只是
将完成这项工作,因为 伴随对象 本身是语言级别的单例。
(第 一次 调用伴随对象时将创建
instance
。)- 更新 -
如果需要控制单例对象的初始化时间,可以为每个类创建一个对象。
这里,
AnotherClass.instance
在AnotherClass.instance
被实际调用之前被初始化。它在AnotherClass
的伴随对象时被初始化。为了防止它在需要时被初始化,你可以这样使用:如果你不关心每个单例何时初始化,你也可以像这样使用它:
总之,
object
或companion object
是 Kotlin 中的一个单例对象。您可以在一个或多个 对象 中 分配变量,然后像使用单例一样使用这些变量。
object
或companion object
在第一次使用时被实例化。val
s andvar
s in anobject
are initialized when theobject
is first instantiated (ie, when theobject
首次使用)。编辑:William Hu 在评论中说“a
companion object
是加载类的时间。”