使用 PropertyChangeSupport 获取变量更改通知(例如 observable、delegate)

Arm*_*ian 0 variables delegates observable kotlin

我有这种问题,我想听听变量的变化。让我们来看看我已经var foo:Int = 10初始化并在代码中的某个地方将它的值更改为其他东西让我们foo = 99这里是我在 kotlin 中的代码片段。

var foo:Int=10

private val changeSupport: PropertyChangeSupport? = PropertyChangeSupport(foo)

val observer = {
                    property: KProperty<*>,
                    oldValue: Int?,
                    newValue: Int? -> changeSupport!!.firePropertyChange(property.name, oldValue, newValue)
                }

 var oof: Int? by Delegates.observable(foo, observer)
 changeSupport!!.addPropertyChangeListener { event ->
                    Log.d("loggg","Property [${event.propertyName}] changed " + "from [${event.oldValue}] to [${event.newValue}]")
                }
Run Code Online (Sandbox Code Playgroud)

因此,在我编写的代码中的某处时,foo = 99我必须接收日志。我按照这篇文章尝试了很多东西,但没有成功。我错过了什么吗?

如何为变量创建更改侦听器?

http://kotlination.com/kotlin/kotlin-observable-property-delegated-property https://www.javalobby.org/java/forums/t19476.html

Arm*_*ian 5

所以解决方案比我想象的更简单。我必须首先像这样用委托和可观察来分配变量。

 var foo:Int? by Delegates.observable(10) { property, oldValue, newValue ->

            Log.d("loggg","gggol")

        }
Run Code Online (Sandbox Code Playgroud)

每次我调用 foo=something 时,它都会记录以下输出。谢谢。)