Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java8中for循环的更改_Java - Fatal编程技术网

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