Java中的内部本地类

Fur*_*kan 1 java local-class

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我研究过的这本书说,本地类只能使用本地类所在的final变量和方法的引用.在这个例子中,我使用的b是不是final或引用的变量.它跑了,我没有得到任何错误.怎么样?有人可以解释这种行为吗?

Sot*_*lis 5

你的书可能已经过时了.从Java 8开始,您可以有效地使用最终的局部变量.

如果您尝试b在本地类定义之前,之后或之中的任何位置进行更改,则会出现编译器错误.