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

Tad*_*eik 1 kotlin

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

class MainActivity : myVariables, AppCompatActivity() {override val money = 0}
abstract class ShopActivity : myVariables, AppCompatActivity() {override val money = 0}
Run Code Online (Sandbox Code Playgroud)

界面:

interface myVariables {
val money: Int
}
Run Code Online (Sandbox Code Playgroud)

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

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

asm*_*dey 7

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

object MyVariables {
  const val string = "foo"
  val pops = 4
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样在你的课堂上使用它:

class MyClass {
  fun myMethod() {
    println(MyVariables.string)
  }
}
Run Code Online (Sandbox Code Playgroud)

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


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