2015-04-21 2 views
0

я проходил следующий код, который является реализацией связанного списка, используя статический вложенный класс:Использования «это», когда класс содержит вложенный статический класс

http://www.cs.cmu.edu/~adamchik/15-121/lectures/Linked%20Lists/code/LinkedList.java

Одна линии я не был» т в состоянии понять было:

public boolean contains(AnyType x) 
    { 
     **for(AnyType tmp : this)** 
     if(tmp.equals(x)) return true; 

     return false; 
    } 

Как это, что «это» здесь позволяет нам пройти данные, хранящийся внутри каждого узла?

+1

'this' является LinkedList. И это Итерабельно. Таким образом, вы можете использовать цикл foreach для итерации по своим элементам. –

+0

Метод объявлен в LinkedList, поэтому 'this' относится к LinkedList. – Radiodef

ответ

1

Потому что this в этом случае является Iterable (точнее, LinkedList).

Цикл for-each, введенный в Java 5, представляет собой синтаксический сахар для вызова IteratorIterable. В примере вашего примера код эквивалентен

for (Iterator<AnyType> i = this.iterator(); i.hasNext();) { 
    if (i.next().equals(x)) return true; 
} 

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

  • Нет связанных вопросов^_^