代码
//验证增强for循环参数是否可以给局部内部类使用 //竟然是可以用的 int[] arr = {1, 2, 3, 4}; for (int tmp : arr) { new Thread(() -> { System.out.println(tmp); //此处tmp不报错 }).start(); }运行结果
java.exe com.msb.Test 1 2 3 4 Process finished with exit code 0代码
//验证普通for循的环索引是否可以给局部内部类使用 //不可以 for (int i = 0; i < 4; i++) { new Thread(() -> { System.out.println(i); //此处编译报错 }).start(); }编译结果
javac -d . -encoding utf-8 Test.java Test.java:28: 错误: 从内部类引用的本地变量必须是最终变量或实际上的最终变量 System.out.println(i); //此处编译报错 ^ 1 个错误代码
//验证普通for循环内final变量是否可以重复赋值并给局部内部类使用 //竟然是可以用的 for (int i = 0; i < 4; i++) { final int tmp = i; //此处竟然可以重复赋值 new Thread(()->{ System.out.println(tmp); }).start(); }运行结果
java.exe com.msb.Test 1 0 2 3 Process finished with exit code 0