gpt4 book ai didi

android - Kotlin - 另一个对象(不是类)内的伴随对象的任何替代品?

转载 作者:行者123 更新时间:2023-11-29 14:30:00 28 4
gpt4 key购买 nike

我希望在我的 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 类似,但不允许在对象内部使用,只能在类内部使用。

当然我可以保持原样或将这些定义设为全局,但我想知道是否可以按照我描述的方式进行?或者也许我应该以另一种方式设计它?

最佳答案

在 Kotlin 中有两种处理静态数据的方法:

一个对象

object ASingleton {
val CONSTANT_PROPERTY: Int = 1;
}

如果您需要单个实例类,每个属性只有一个状态,请使用单例。注意:此类只能有一个实例,它是由编译器为您创建的。

具有伴随对象的类

class ClassWithCompanionObject{

val someProperty: Int = 0; // instance bound

companion object {
val CONSTANT_PROPERTY: Int = 1;
}
}

如果您需要一些静态属性,而其余的应该有一个绑定(bind)到特定实例的状态,请使用带有 companion object 的类。

用法:

println(ASingleton.CONSTANT_PROPERTY)
println(ClassWithCompanionObject.CONSTANT_PROPERTY)

关于android - Kotlin - 另一个对象(不是类)内的伴随对象的任何替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47505991/

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