- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我对 VetoableChangeListener
的设计有疑问。我实现了 VetoableChangeListener 接口(interface)来监听模型类中属性的更改,因此当模型触发时
vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException
…我尝试将更改保存在数据库中,这可能会失败(例如,由于 SQLException
)。如果失败,我会抛出一个 PropertyVetoException
来恢复模型中的更改。
该模型在 VetoableChangeSupport
(JDK 类)中进行委托(delegate),当它收到 PropertyVetoException
时,它会捕获它并通知恢复到所有 VetoableChangeListener
,同时 oldValue
/newValue
互换(稍后重新抛出异常),以便该事件再次到达我的类,我尝试保存在再次数据库,等等...
我有一个解决方法,即模型不会更改,直到没有人抛出 PropertyVetoException
,因此在 VetoableChangeListener
中,我首先检查要保存在数据库中的数据是否不等于模型中的数据,如果相等,我会忽略更改。
还有其他更好的解决方法吗?
最佳答案
您的“解决方法”并不是真正的解决方法,但实际上对我来说听起来像是正确的解决方案:在尝试“更改”持久版本之前确认对象的当前状态实际上已发生更改。这也会更加高效(数据库访问的成本很高)。
关于java - 使用 VetoableChangeListener 停止循环通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/120082/
我对 VetoableChangeListener 的设计有疑问。我实现了 VetoableChangeListener 接口(interface)来监听模型类中属性的更改,因此当模型触发时 veto
一切都在问题的标题中。您能否提供一些我们使用 PropertyChangeListener 和 VetoableChangeListener 的用例? 最佳答案 主要区别在于 PropertyChan
我是一名优秀的程序员,十分优秀!