2016-01-09 5 views
0

Просмотрев исходный код java, я столкнулся с непонятной для меня конструкцией в методе hashCode() класса AbstractList. Это реализация метода hashCode для ArrayList. Я не понимаю, как это происходит с каждым из них.Попытка понять hashCode() реализация ArrayList

public int hashCode() { 
    int hashCode = 1; 
    for (E e : this) //<--??? 
     hashCode = 31*hashCode + (e==null ? 0 : e.hashCode()); 
    return hashCode; 
} 

Е является тип элемента. Но к какому классу (типу) указатель принадлежит этот?

ответ

1

Но, к какому классу (тип) указатель это принадлежит?

this - это список, который был вызван hashCode. Таким образом, тип времени компиляции - AbstractList<E>.

Это говорит «для каждого элемента в этом списке, включая хэш-код этого элемента в результате».

+0

Это так просто. Мне стыдно. – Nikolas

1

E e относится к общего типа в этом ArrayList<E> (см E?)

Думайте об этом как

ArrayList<String> list 
for(String e : list) { 

только потому, что вы в списке ваш list становится this

1

List<Person> personList = new ArrayList<Person>();

this - это будет называться personList
e - Это будет ссылаться объект из класса Person

Смежные вопросы