爲什麼實現Iterator接口允許一個對象成爲java中「foreach」語句的目標?瞭解Iterator接口和「foreach」語句之間的關係
我是指java中的for-each和Iterable
接口之間的關係。
for(Object:Iterable<T>)
{
//code here
}
爲什麼實現Iterator接口允許一個對象成爲java中「foreach」語句的目標?瞭解Iterator接口和「foreach」語句之間的關係
我是指java中的for-each和Iterable
接口之間的關係。
for(Object:Iterable<T>)
{
//code here
}
因爲這是增強的for語句在jls-14.14.2中定義的方式。
具體來說:
增強的for語句等價於一個基本爲形式的語句:
for (I #i = Expression.iterator(); #i.hasNext();) {
VariableModifiersopt TargetType Identifier =
(TargetType) #i.next();
Statement
}
這就是基於語言規範的JVM實現。例如,布爾是if語句的目標。
JVM與它沒有多大關係。 – aioobe 2014-10-27 15:07:54
比這背後的真正原因是什麼 – 2014-10-27 16:35:36
您使用的詞語實施Iterator接口允許一個對象是「foreach」聲明的目標聽起來像你已經閱讀Java Doc - Interface Iterable。
那麼,爲什麼你沒有按照提到的鏈接The For-Each Loop?那裏給出了一個很好的解釋。
你能解釋一下嗎 – 2014-10-27 16:31:52
@NiravsinhParmar你還想知道什麼?當你想遍歷數組或Iterable時,「for-each」循環只是語法糖。 Javadoc的[API中的鏈接](http://docs.oracle.com/javase/8/docs/technotes/guides/language/foreach.html)更詳細地介紹了提供它的基本原理,如果這就是你之後。基本上,任何時候你不需要直接訪問迭代器,就使用for-each。 – azurefrog 2014-10-27 16:40:37
所以這意味着編譯器會處理所有這些問題 – 2014-10-27 16:55:15