java JavaFX InvalizationListener或ChangeListener
我只感兴趣的是房产是否发生了变化,而不是新的价值
注册InvalidationListener
而不是ChangeListener
是否有利
我假设对属性的更改首先会使该属性无效,并通知所有无效侦听器。仅当注册了更改侦听器,或有人请求此属性时,才会“验证”该属性/重新计算该属性,并使用新值更新所有更改侦听器
因为我对实际值不感兴趣,所以我认为只监听失效事件(属性已更改但未重新计算,某种中间状态)是一种性能优势
# 1 楼答案
为此,您需要实现一个
ChangeListener
。只有当值变得无效时,才会执行InvalidationListener
。见docs来自ObservableValue的java文档:
我添加了一个简单的例子
使用
InvalidationListener
的问题是,如果该值再次无效,您将不会收到更改通知,因为它已经无效。你必须使用一个变更监听器在属性上注册更改侦听器将禁用延迟求值,因此每次触发更改侦听器时都会触发失效事件
在我添加的样本中尝试一下