когда modCount инициализируется в java.util.ArrayList? - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу знать, когда инициализируется поле modCount из java.util.ArrayList. Из исходного кода java.util.ArrayList мы знаем, что поле modCount унаследовано от java.util.AbstractList.А в закрытом внутреннем классе java.util.ArrayList с именем Itr его поле Ожидается, что Модуля назначается из modCout ,, как показано ниже

enter image description here

В демонстрационной версии, Я отладил и обнаружил, что itr.expectedModCount был инициализирован. Потому что значение ОжидаемыйМодCount от modCount. Поэтому я искал исходный код, чтобы найти, когда modCount инициализирован, но не удалось.

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Когда я ищу, где находится modCount, я могу найти его, он находится внутри java.util.AbstractList и объявляется как:

protected transient int modCount = 0;

Это означает, что он инициализируется при объявлении.

0 голосов
/ 14 ноября 2018

Инициализируется в 0 (обратите внимание, что это переменная экземпляра суперкласса AbstractList):

protected transient int modCount = 0;

и увеличивается в нескольких местах, в которых List структурно модифицируется (т.е. элементы добавляются или удаляются).

Например:

public E remove(int index) {
    rangeCheck(index);

    modCount++;
    ....
}

Обратите внимание, что класс Itr является внутренним классом ArrayList, и поэтому он имеет доступ к членам включающего экземпляра ArrayList (который включает в себя переменную modCount экземпляра AbstractList super- класс).

...