【发布时间】:2017-11-27 07:44:28
【问题描述】:
我希望在我的 Kotlin Android 应用程序中拥有单例对象,并对其内部状态进行一些静态定义。
据我了解,Kotlin 中的object 是针对单例的,所以我正在尝试这种方法:
object MySingleton
{
public const val _DEF_DEFINITION_NO_ONE: Byte = 1;
public const val _DEF_DEFINITION_NO_TWO: Byte = 2;
(...)
}
这很好,但问题是,为了能够使用这些定义,现在我必须先创建 Object 的实例。
只是想知道我是否能够在 Kotlin 中创建这种结构并在不创建 MySingleton 实例的情况下访问这些定义?答案是 companion object 与其他语言中的 static 工作方式相似,但不允许在对象内部,只能在类内部。
当然,我可以保持原样或将这些定义设为全局,但想知道是否可以按照我描述的方式进行操作?或者也许我应该以另一种方式设计它?
【问题讨论】:
-
now I must create Object's instance first成功了吗? -
@voddan 我是这么认为的,因为我在主要活动中使用了这个:
private var myPrivateVar: MySingleton = MySingleton,它并没有导致语法错误。似乎在这种情况下它只是复制参考,或者类似的东西。抱歉,我还是 Kotlin 的新手。 -
我明白了。由于任何实例初始化都是一个动作,它总是需要像函数调用
MyClass()这样的大括号。这就是您知道调用构造函数并创建对象的方式。
标签: android design-patterns kotlin