我有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的相同变量。
我想要的效果就像这个变量在使用它的文件中是全局的一样,如果这有意义的话。
答案 0 :(得分:2)
你正在寻找单身人士。在Kotlin中创建它们的惯用方法是创建对象(而不是类),它将保存您的变量。像这样:
object MyVariables {
const val string = "foo"
val pops = 4
}
然后你可以在你的班级中使用它:
class MyClass {
fun myMethod() {
println(MyVariables.string)
}
}
当然,如果您需要更改它们,可以使用var
,而不是val
。但是请注意,拥有全局可变状态通常是一个坏主意,因为很难跟踪代码,变量从哪里变更。
另请注意,通常从小写开始接口名称是一个坏主意,因为它会破坏约定并使代码的可读性降低。我花了几秒钟才明白myVariables
不是变量名。