【面试重点】局部内部类

class Outer {
    public int num = 10;

    public void fun() {
        final int num = 10;
        class Inner {
            public void show() {
                System.out.println(num);
            }
        }
        
        Inner in = new Inner();
        in.show();
    }
}

如果局部内部类访问了局部变量,那么 局部变量必须是final

原因:局部变量会随着方法执行完毕而消失,而对象中有访问局部变量,对象不会消失,所以局部变量必须 final

    上面程序反编译之后可以看到:会变成System.out.println(10);

posted @ 2022-03-02 23:40  Ging2000  阅读(19)  评论(0)    收藏  举报