kotlin怎么修改companion object中包含的val修饰的变量值,例如companion object{public val num =30}我怎么在别的类的普通方法中修改它的值
时间: 2024-09-10 13:03:45 浏览: 48
kotlin中object关键字的三种使用场景
在Kotlin中,`companion object`中的`val`修饰的变量默认是不可变的,但是可以通过`var`修饰符来声明一个可变的变量。然而,`companion object`中的`var`属性值也不能直接在其他类中修改,除非提供了修改的接口或者方法。下面是如何在`companion object`中定义一个可变变量并在外部修改它的值的方法:
首先,在你的类中定义`companion object`并使用`var`来创建一个可变的属性:
```kotlin
class MyClass {
companion object {
var num: Int = 30
}
}
```
然后,你可以通过类名直接访问并修改这个属性:
```kotlin
fun main() {
println(MyClass.num) // 输出初始值 30
MyClass.num = 40 // 修改值为 40
println(MyClass.num) // 输出修改后的值 40
}
```
如果你想要在其他类的普通方法中修改它的值,可以提供一个公开的方法来改变这个值:
```kotlin
class MyClass {
companion object {
private var _num: Int = 30
var num: Int
get() = _num
set(value) {
_num = value
}
}
fun changeNum(value: Int) {
num = value
}
}
// 在其他类中
class OtherClass {
fun updateMyClassNum(value: Int) {
// 修改MyClass.companion中的num值
MyClass.num = value
}
}
```
通过上面的`get()`和`set()`方法,你可以在类的外部修改`companion object`中的`num`值。同时,我们使用一个私有的变量`_num`来存储实际的值,对外提供`num`的公开访问器(getter和setter),从而保证了封装性。
阅读全文