gpt4 book ai didi

java - 为什么 AbstractTableModel 上的 fireTableChanged() 从最后到第一个通知监听器?

转载 作者:行者123 更新时间:2023-12-01 19:07:29 25 4
gpt4 key购买 nike

这很晦涩,但由于某种原因,AbstractTableModel 中的通知是从后到先的,导致我的代码中出现错误。我可以修复它,但我想知道是否有人知道为什么通知以这种方式完成?

public void fireTableChanged(TableModelEvent e) {
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]==TableModelListener.class) {
((TableModelListener)listeners[i+1]).tableChanged(e);
}
}
}

最佳答案

我认为这没有真正的理由。

也许他们想要额外的安全性,以防监听器在事件被触发时(即我们仍在迭代监听器列表时)从监听器列表中删除自己。

>

尽管这并不是真正必要的,因为listenerList是写时复制的......

关于java - 为什么 AbstractTableModel 上的 fireTableChanged() 从最后到第一个通知监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9523152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com