【发布时间】:2017-11-13 09:39:27
【问题描述】:
考虑这段代码:
public class Test
{
static final Collection<String> info = new ArrayList<>();
public static void main(String... args) {
for (String info : info) {
System.out.println(info);
}
}
}
它在 java 8 中编译良好,但在 java 7 中导致编译时错误:
Test.java:8: error: for-each not applicable to expression type
for (String info : info) {
^
required: array or java.lang.Iterable
found: String
我当然不应该写这样的代码。真正的类要大得多,并且该字段的重命名会导致这样的事情......
我的问题是:为什么会这样? 语言的什么演变使得这在 java 8 中是合法的? 我检查了各种 java 8 更改列表,但找不到任何解释此行为的内容。
谁能指出导致此问题的 java 8 的变化?
【问题讨论】:
-
将集合重命名为其他名称:
collectionInfo,然后重试。
标签: java