kotlin 工具类中 companion object 中的一个变量 默认值是0 在另一个静态方法中 把他设置为1 再另一个方法获取为啥是还是0
时间: 2024-12-24 07:33:37 浏览: 6
在Kotlin的companion object中,如果你定义了一个默认值为0的变量,这个变量实际上是类级别的共享状态。当你在一个静态方法中尝试改变它的值,比如设置为1,这会直接影响到该companion object的所有实例,包括那些还未创建实例的对象。但是,当你直接通过类名而非对象调用获取该变量的方法时,你得到的仍然是默认值0,因为这时并未实际触发变量值的更新。
这是因为`companion object`的行为类似于单例模式,它的作用域是在整个类的生命周期内,并不是每个实例都会有自己的独立副本。所以,如果你只是改变了其值,而没有通过类名去读取那个已经被修改了的新值,那么下次获取时还是默认值0。
如果你想在获取的时候看到被改变的值1,你应该确保每次获取都在改变值之后,或者使用一个同步机制保证获取的是最新的状态。
```kotlin
class MyClass {
companion object {
var sharedValue = 0
fun setToOne() {
sharedValue = 1
}
fun getSharedValue(): Int {
return sharedValue
}
}
}
MyClass.setToOne()
println(MyClass.getSharedValue()) // 输出应该是1
```
阅读全文