为什么局部内部类访问外边的局部变量必须为final

6.局部内部类访问外边的局部变量时,此变量必须为final类型 

马克-to-win:由于技术方面的限制,java的设计者们做出如下语法规定:局部内部类访问外边的局部变量时,此变量必须为final类型,(为什么请参考我的参考目录)马克-to-win:否则会报一个错误:Cannot refer to a non-final variable i inside an inner class defined in a different method 

例2.6

class ShellMark_to_win {

   int x = 100;//x是类变量, 内部类访问时不用加final。
    void test() {
        for (int i = 0; i < 2; i++) {
/*马克-to-win:下面的y和str是局部变量,内部类访问时必须加final  */ 
            final int y=6;   
            final String str="aaa";
            class Core {
                void display() {
                    System.out.println("外部类的x=" + x+y+str);
                }
            }
            Core inner = new Core();
            inner.display();
        }
    //    Core inner = new Core(); //错误找不到Core。
    }
}
public class Test {
    public static void main(String args[]) {
        ShellMark_to_win s = new ShellMark_to_win();
        s.test();
    }
}

更多内容请见原文,文章转载自:https://blog.csdn.net/qq_44639795/article/details/103109941

posted @ 2021-02-08 10:23  师徒行者  阅读(103)  评论(0编辑  收藏  举报