kotlin 对象的可变性

Mutability in kotlin object

我正在研究 Kotlin 中的可变性特殊情况。

这是我正在玩的代码:

var a = 350
val b = a
a = 8
println(b) // 350. ===> should be 8

我想将 b 保留为 val 但同时它应该能够每次都取 a 的值 a变量被修改。

所以我尝试了对象解决方案,但如下所示,x 变量不可访问。我想这个解决方案不正确。

val object1 = object {
    var x = 350
}
val object2 = object1
object1.x = 8
println(object2.x)

有没有办法同步此 x 但不将块放入 同步注释函数 中,如下所示?

@Synchronized
fun someFunction(): Int {

    val object1 = object {
        var x = 350
    }
    val object2 = object1
    object1.x = 8
    println(object2.x)

return object2.x
}
someFunction()

您可以将 b 定义为引用 a:

的 属性
var a=350
val b: Int
    get()=a

每次访问 b 时,它都会将该访问重定向到 a

以下将打印 8 而您不必使用您的对象解决方案:

var a=350
val b: Int
    get()=a
fun main() {
    a=8
    println(b)
}