gar*_*bus 2 android design-patterns kotlin
我希望在我的 Kotlin Android 应用程序中拥有带有一些内部状态静态定义的单例对象。
据我了解,object在 Kotlin 中是针对单身人士的,所以我正在尝试这种方法:
object MySingleton
{
public const val _DEF_DEFINITION_NO_ONE: Byte = 1;
public const val _DEF_DEFINITION_NO_TWO: Byte = 2;
(...)
}
Run Code Online (Sandbox Code Playgroud)
这很好,但问题是,为了能够使用这些定义,现在我必须首先创建 Object 的实例。
只是想知道我是否能够在 Kotlin 中创建这种构造并在不创建MySingleton实例的情况下访问这些定义?Answer 的companion object工作方式与static其他语言类似,但不允许在对象内部,只能在类内部。
当然,我可以保持原样或将这些定义设为全局,但想知道是否可以按照我描述的方式进行?或者也许我应该以另一种方式设计它?
在 Kotlin 中有两种处理静态数据的方法:
一个 object
object ASingleton {
val CONSTANT_PROPERTY: Int = 1;
}
Run Code Online (Sandbox Code Playgroud)
如果您需要单个实例类,每个属性只有一个状态,请使用单例。注意:此类只能有一个实例,它是由编译器为您创建的。
一个类 companion object
class ClassWithCompanionObject{
val someProperty: Int = 0; // instance bound
companion object {
val CONSTANT_PROPERTY: Int = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您需要一些静态属性,而其余的应该具有绑定到某个实例的状态,请使用带有companion object.
用法:
println(ASingleton.CONSTANT_PROPERTY)
println(ClassWithCompanionObject.CONSTANT_PROPERTY)
Run Code Online (Sandbox Code Playgroud)