為什么局部?jī)?nèi)部類訪問(wèn)外邊的局部變量必須為final

局部?jī)?nèi)部類訪問(wèn)外邊的局部變量時(shí),此變量必須為final類型
馬克-to-win:由于技術(shù)方面的限制,java的設(shè)計(jì)者們做出如下語(yǔ)法規(guī)定:局部?jī)?nèi)部類訪問(wèn)外邊的局部變量時(shí),此變量必須為final類型,(為什么請(qǐng)參考我的參考目錄)馬克-to-win:否則會(huì)報(bào)一個(gè)錯(cuò)誤:Cannot refer to a non-final variable i inside an inner class defined in a different method
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。



例2.6---本章源碼

class ShellMark_to_win {
   int x = 100;//x是類變量, 內(nèi)部類訪問(wèn)時(shí)不用加final。
    void test() {
        for (int i = 0; i < 2; i++) {
/*馬克-to-win:下面的y和str是局部變量,內(nèi)部類訪問(wèn)時(shí)必須加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(); //錯(cuò)誤找不到Core。
    }
}
public class Test {
    public static void main(String args[]) {
        ShellMark_to_win s = new ShellMark_to_win();
        s.test();
    }
}

輸出結(jié)果:
外部類的x=1006aaa
外部類的x=1006aaa