Java中的每个表达式翻译成什么?
上面的片段翻译成什么Java中的每个表达式翻译成什么?,java,foreach,Java,Foreach,上面的片段翻译成什么 我最感兴趣的是getList()方法调用一次,还是每次迭代/元素调用一次?它被转换为下面的代码片段,而objectWithList.getList()只调用一次 for ( SomeListElement element : objectWithList.getList() ) { ... } 相当于 for (Iterator i = objectWithList.getList().iterator(); i.hasNext();) { SomeListEl
我最感兴趣的是
getList()
方法调用一次,还是每次迭代/元素调用一次?它被转换为下面的代码片段,而objectWithList.getList()只调用一次
for ( SomeListElement element : objectWithList.getList() ) { ... }
相当于
for (Iterator i = objectWithList.getList().iterator(); i.hasNext();) {
SomeListElement e = (SomeListElement) i.next();
}
for(迭代器i=objectWithList.getList().Iterator();
i、 hasNext();){
SomeListElement元素=i.next();
//访问元素在这里
}
这是迭代器
解决方案的简写。在问这个问题之前,您做了哪些研究?语言规范似乎是一个显而易见的地方,它给出了非常清楚的答案。你不能尝试在getList上添加一个副作用吗?@JonSkeet我偶然发现了这一点,一条引起我注意的旁注:对于每个
,在规范中,在文档(不同的JDK文档)中,甚至在许多书中,都被称为“语法糖/增强的for循环”,用于迭代Iterable集合,这很有道理。即使是Iterable的例子,相应的字节码(foreach vs.for)也非常相似。我想知道foreach是真的在幕后使用iterator()
还是。。你的链接说它也用于阵列。。无聊的。
for(Iterator<SomeListElement> i = objectWithList.getList().iterator();
i.hasNext(); ) {
SomeListElement element = i.next();
//access element here
}