Java 7编译器的bug

sorra 发表于 09/27 18:03 修改于 09/27 18:04 阅读数50

这段代码无法通过Oracle JDK 7的编译,能通过Oracle JDK 8和Eclipse JDT 7/8的编译。

Oracle的Java 7没有正确识别for循环的变量作用域,还好有类型错误能阻止编译。

我几经尝试,没有找到绕过类型错误的办法,所以这个问题应该是不会跑到运行时的。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test {
  private static List<List<String>> list = new ArrayList<>();
  static {
    list.add(Arrays.asList("a", "b"));
  }

  public static void main(String[] args) {
    System.out.println(list.get(0));
    System.out.println();

    for (List<String> list : list) {
      System.out.println(list);
    }
  }
}