我想知道何时初始化java.util.ArrayList的字段modCount。从java.util.ArrayList的源代码中,我们知道字段modCount继承自 java.util.AbstractList。在名为Itr的java.util.ArrayList的私有内部类中,其字段ExpectedModCount是从modCout分配的,如下所示
在一个演示中,我调试了一下,发现itr.expectedModCount已初始化。因为ExpectedModCount的值来自modCount。所以我在源代码中查找了modCount初始化的时间,但失败了。
答案 0 :(得分:2)
它初始化为0(请注意,它是AbstractList
超类的实例变量):
protected transient int modCount = 0;
,并在List
进行结构修改(即添加或删除元素)的几个位置递增。
例如:
public E remove(int index) {
rangeCheck(index);
modCount++;
....
}
请注意,Itr
类是ArrayList
的内部类,因此它可以访问封闭的ArrayList
实例(包括modCount
实例)的成员。 AbstractList
超类的变量)。
答案 1 :(得分:0)
当我查找modCount
所在的位置时,可以找到它,它位于java.util.AbstractList
内部,并声明为:
protected transient int modCount = 0;
这意味着它在声明时已初始化。