如您所知,java中的ObservableValue
可以生成两种类型的事件:Invalidation
和Change
。我不知道它们之间的区别是什么?
何时应该使用Invalidation或Change Listener?
答案 0 :(得分:2)
根据文件:
ObservableValue
生成两种类型的事件:更改事件和失效事件。更改事件表示值已更改。如果当前值不再有效,则会生成失效事件。如果ObservableValue
支持延迟评估,则此区别变得很重要,因为对于延迟评估的值,人们不知道无效值是否确实已更改,直到它重新计算。出于这个原因,生成更改事件需要急切的评估,同时可以为急切和懒惰的实现生成失效事件。
即使可观察值支持延迟评估,ChangeListener也会执行急切计算。
如果要查找在observe属性中发生的更改,请使用更改侦听器。由于InvalidationListener只能帮助我们知道发生了一些变化,如果您想知道旧值和新值之间的差异,您必须自己计算或者只是使用更改侦听器。