【发布时间】:2017-06-20 00:51:54
【问题描述】:
如您所知,java 中的 ObservableValue 可以生成两种类型的事件:Invalidation 和 Change。我不知道他们之间有什么区别?
我们什么时候应该使用 Invalidation 或 Change Listener?
【问题讨论】:
-
什么只是阅读JavaDocs,
InvalidationListener支持来自父类Observable,它的目的有点模糊,但我认为这是故意的,因为含义是上下文的实施。 -
"一个ObservableValue产生两种类型的事件:change事件和invalidation事件。change事件表示值已经改变。invalidation事件如果当前值是不再有效。如果 ObservableValue 支持惰性求值,这种区别就变得很重要,因为对于惰性求值的值,在重新计算之前,不知道无效值是否真的发生了变化。因此,生成更改事件需要急切的评估,而失效事件可以为急切和懒惰的实现生成。”
-
通俗地说,“哎,值被改了”和“哎,发现值无效”是两个不同的事件。
标签: java javafx javafx-8 observable