【发布时间】:2021-11-30 21:00:30
【问题描述】:
我正在研究 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()
【问题讨论】:
-
为什么需要同步呢?同时设置一个属性是安全的(只要它没有背后的逻辑)。
标签: kotlin concurrency synchronized