程序员社区

(Java基础面试题)局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final?

  • 局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final呢?它内部原理是什么呢?先看这段代码:

    public class Outer {
    
        void outMethod(){
            final int a =10;
            class Inner {
                void innerMethod(){
                    System.out.println(a);
                }
            }
        }
    }
    
  • 以上例子,为什么要加final呢?是因为生命周期不一致, 局部变量直接存储在栈中,当方法执行结束后,非final的局部变量就被销毁。而局部内部类对局部变量的引用依然存在,如果局部内部类要调用局部变量时,就会出错。加了final,可以确保局部内部类使用的变量与外层的局部变量区分开,解决了这个问题。

Java面试题

赞(0) 打赏
未经允许不得转载:IDEA激活码 » (Java基础面试题)局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final?

一个分享Java & Python知识的社区