在kotlin中的类之间共享数据的方法

时间:2018-04-14 03:46:11

标签: kotlin

我有2个kotlin类,它们都实现了接口myVariables。内部myVariables是名为money的变量。我想要做的是在两个类中使用相同的变量(并保持其值)。这是一个很好的方法吗?

class MainActivity : myVariables, AppCompatActivity() {override val money = 0}
abstract class ShopActivity : myVariables, AppCompatActivity() {override val money = 0}

界面:

interface myVariables {
val money: Int
}

在我的两个类中使用相同变量而不重新定义其值的更好方法是什么。例如,如果变量在MainActivity类中获得了值5,我想在ShopActivity类中使用值为5的相同变量。

我想要的效果就像这个变量在使用它的文件中是全局的一样,如果这有意义的话。

1 个答案:

答案 0 :(得分:2)

你正在寻找单身人士。在Kotlin中创建它们的惯用方法是创建对象(而不是类),它将保存您的变量。像这样:

object MyVariables {
  const val string = "foo"
  val pops = 4
}

然后你可以在你的班级中使用它:

class MyClass {
  fun myMethod() {
    println(MyVariables.string)
  }
}

当然,如果您需要更改它们,可以使用var,而不是val。但是请注意,拥有全局可变状态通常是一个坏主意,因为很难跟踪代码,变量从哪里变更。

另请注意,通常从小写开始接口名称是一个坏主意,因为它会破坏约定并使代码的可读性降低。我花了几秒钟才明白myVariables不是变量名。