Java8中for循环的更改
考虑以下代码:Java8中for循环的更改,java,Java,考虑以下代码: public class Test { static final Collection<String> info = new ArrayList<>(); public static void main(String... args) { for (String info : info) { System.out.println(info);
public class Test
{
static final Collection<String> info = new ArrayList<>();
public static void main(String... args) {
for (String info : info) {
System.out.println(info);
}
}
}
当然我不应该写这样的代码。真正的类要大得多,字段的重命名会导致这样的结果
我的问题是:为什么会发生这种情况?
是什么样的语言演变使它在Java8中合法化的?
我查看了各种Java8更改列表,但找不到任何解释这种行为的内容
有人能告诉我java 8中的变化是什么吗?编译器将
info
解释为String
,这就是为什么它不可Iterable
在
for
循环的范围内,它已经存在一个与数组同名的变量编译器将信息
解释为字符串
,这就是为什么它不可Iterable
在for
循环的范围内,已存在一个与数组同名的变量请将集合重命名为其他名称:collectionfo
,然后重试。请将集合重命名为其他名称:collectionfo
,然后重试。
Test.java:8: error: for-each not applicable to expression type
for (String info : info) {
^
required: array or java.lang.Iterable
found: String