我想知道如何 我在Kotlin中定义了一个静态变量,可以在其他类中使用 那不是最终的。 因为数据在变化
示例Java:
public static Boolean ActivityIsRuning = false;
答案 0 :(得分:2)
有三种方法可以实现此目的:
1)顶级/全局声明
在任何类或函数之外声明一个变量,可以从任何地方访问该变量:
var activityIsRunning = false
2)object(开箱即用的单例)
object StaticData {
var activityIsRunning = false
}
可以这样访问:
StaticData.activityIsRunning
3)使用companion object的类(如Todd所建议的那样)
class Config {
companion object {
var activityIsRunning = false
}
}
可以这样访问:
Config.activityIsRunning
答案 1 :(得分:1)
您必须为此创建伴随对象。 您在Kotlin中的代码如下所示:
class Foo {
companion object {
lateinit var instance: Foo
}
init {
instance = this
}
}
答案 2 :(得分:1)
您可以在任何类的companion object
中定义静态变量。如果将其设置为var
而不是val
,它可以更改值:
class MyClass {
companion object {
var activityIsRunning: Boolean = false
}
}
答案 3 :(得分:0)
除了@Todd和@Willi Mentzel,如果您想将这些设置分组在一个公共区域下,则可以使用顶级普通object
。
object GlobalSettings{
var isHomeActivityRunning = false
var isDrinkingCocoCola = true
}
,可以在代码中的任何位置(在Activity,Service或任何地方)访问此文件,如下所示:
if( GlobalSettings.isDrinkingCocoCola ){
// do something
} else {
GlobalSettings.isDrinkingCocoCola = false
}