java - 预先触发 propertyChangeEvent 的危险
问题描述
在实际更改属性之前触发 propertyChangeEvent 有什么危险(如果有的话)?
目前我有很多看起来像这样的代码:
public void setConfidence (int newConfidence) {
int old = confidence;
confidence = newConfidence;
pcs.firePropertyChange("confidence", old, confidence);
}
在更改属性之前触发事件会更漂亮,并且避免复制:
public void setConfidence (int newConfidence) {
pcs.firePropertyChange("confidence", confidence, newConfidence);
confidence = newConfidence;
}
在单线程应用程序中,预触发事件有什么危险吗?还是其他更喜欢在之后解雇的原因?
解决方案
在您的第二段代码中,您通知侦听器状态已更改,但实际上没有更改,这既不好也不安全。如果侦听器有自己的行为或状态变化,这取决于通知时出现的新状态怎么办?使用通知的主要规则之一是通知代码不需要知道侦听代码对信息的作用,而您的第二位代码不满足这一点。坚持第一种方式。
推荐阅读
- salesforce - 未找到自定义字段
- python - 使用函数延迟打印字符串时,输入返回无
- c++ - 带有 -g 编译选项的某些 C++ 模板类的大内存使用和目标文件大小
- python - 设置 jupyter notebook 时遇到问题 No Module
- javascript - URL 参数分离
- python - 如何将具有 n 个值的 DataFrame 列转换为 n 个二进制列?
- python - Python 仍然使用默认版本而不是 Venv
- sql - 需要帮忙。子查询或存在...应该是什么查询?
- python - 如何在python中使用for循环垂直连接1000张图像?
- pandas - 得到这个错误“系列”对象是可变的,因此它们不能被散列