局部內部類訪問局部變量


 

局部內部類是指位於方法內的類,局部內部類若要訪問其所在方法內的變量,則該變量必須是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