9
當使用Eclipse調試Java代碼時,對於收集變量,我看到了modcount
成員。這是什麼意思?調試集合時的modcount變量是什麼
當使用Eclipse調試Java代碼時,對於收集變量,我看到了modcount
成員。這是什麼意思?調試集合時的modcount變量是什麼
許多Java的集合產生「fail-fast」的迭代器,這意味着如果集合在迭代器創建後發生更改,迭代器將失效,並儘快拋出ConcurrentModificationException
。 (與之後失敗或返回無效數據相比)
爲了支持此功能,集合必須跟蹤它是否已被修改。每次收集更改時,它都會增加modcount
。當集合生成一個迭代器時,迭代器將從創建它時的值存儲modcount
。然後,無論何時嘗試使用迭代器,它都會檢查其保存的modcount
是否與父集合的當前modcount
不同;如果是,則迭代器失敗,出現ConcurrentModificationException
。
(此規則的一個例外是,修改通過迭代器本身(如迭代器的remove
方法制得的集合),不壞迭代器)。這真是很好的解釋
感謝。我知道它做了這樣的事情,但不詳細 – moeTi
非常好的解釋。現在是有道理的。 –
代碼:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#ArrayList.ListItr – roottraveller