Java 中的内部本地 类

Inner Local Classes in Java

public class Main {
    public static void main(String[] args) {
        int b=1;
        final int c=2; 
        String s1[] = new String[]{"A","B","C"};

        class InnerMain{                                    
            int a=5;

            public void show(){ 
                System.out.println(s1[0]);
                System.out.println("A:" + a);
                System.out.println("B:" + b);
                System.out.println("C:" + c);
            }
        }

        InnerMain test =new InnerMain();
        test.show();
    }
}

我读过的书说本地 class 只能使用 final 变量和本地 class 所在方法的引用。在这个例子中,我使用了变量 b 那不是 final 或参考。它 运行 并且我没有收到任何错误。如何?有人可以解释这种行为吗?

您的书可能已经过时了。由于 Java 8 你可以使用 effectively final 局部变量。

如果您尝试在本地 class 定义之前、之后或中的任何地方更改 b,您会遇到编译器错误。