局部内部类访问局部变量


 

局部内部类是指位于方法内的类,局部内部类若要访问其所在方法内的变量,则该变量必须是final修饰的。

    public static void main(String[] args) {

        int a = 3; // 应当使用final修饰变量a

        class Inner{
            public void printA() {System.out.println("a = " + a);}
        }
    }

Inner是位于方法main()内的局部内部类,若要访问方法内的局部变量a,则a应当使用final修饰。

 

被内部类访问的局部变量会被拷贝一份到内部类中,即Inner中存在一个成员变量,用于记录局部变量a的值。若局部变量不是final的,其取值就可以被修改,而Inner对象中保存的是其原来的值,这就会出现数据不同步的问题。

Java为了避免数据不同步的问题,做出了内部类只可以访问final的局部变量的限制。

 

在java8中,可以不使用final,如果局部变量被内部类访问,那么该局部变量相当于自动使用了final修饰。

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM