【问题标题】:Change in for loops in java 8 [duplicate]java 8中for循环的变化[重复]
【发布时间】: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 的变化?

【问题讨论】:

标签: java


【解决方案1】:

编译器将info 解释为String,这就是为什么它不是Iterable

for循环的范围内,已经存在一个与你的数组同名的变量

【讨论】:

    猜你喜欢
    • 2018-09-17
    • 2014-01-12
    • 2019-05-23
    • 2020-08-09
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2019-02-01
    相关资源
    最近更新 更多