关于"for"语句中迭代器对象的问题

use*_*609 2 java

我试图理解一个java程序,它有一个代码段,如

for (final Document document : cluster.getDocuments())  {  
    if (documentsShown >= maxNumberOfDocumentsToShow)  {  
        break;  
    }  
    displayDocument(level + 1, document);  
    documentsShown++;  
}  
Run Code Online (Sandbox Code Playgroud)

这是否意味着cluster.getDocuments()必须是迭代器对象?

mre*_*mre 7

它需要是一个可迭代的对象(即集合或数组).基本上,

它通常用于迭代数组或Collections类(例如,ArrayList).它还可以迭代实现Iterable接口的任何东西(必须定义iterator()方法).许多Collections类(例如,ArrayList)实现了Iterable,这使得for-each循环非常有用.您还可以为自己的数据结构实现Iterable.

参考

所有已知的可执行实现类