鏈杩戝湪鐪嬪唴閮ㄧ被鐨勬椂鍊欙紝鏈変竴涓枒鎯: 灞閮ㄥ唴閮ㄧ被鍜屽尶鍚嶅唴閮ㄧ被鍙兘璁块棶 final 鐨勫眬閮ㄥ彉閲忥紝鐪嬩簡鍑犵瘒鍗氬锛屾槑鐧戒簡寰堝銆

棣栧厛锛屾垜浠湅涓涓眬閮ㄥ唴閮ㄧ被鐨勪緥瀛:

瀹炰緥

class OutClass {
        private int age = 12;
 
        public void outPrint(final int x) {
                class InClass {
                        public void InPrint() {
                                System.out.println(x);
                                System.out.println(age);
                        }
                }
                new InClass().InPrint();
        }
}

杩欓噷鏈変竴涓閮ㄧ被 OuterClass 鍜屼竴涓唴閮ㄧ被 InClass锛屽唴閮ㄧ被璁块棶浜嗗閮ㄧ被鐨勪竴涓柟娉曚腑鐨勪竴涓眬閮ㄥ彉閲 x锛屽湪杩欓噷锛寈 蹇呴』鏄 final 鐨勶紝鍚﹀垯浼氭姤閿:

Cannot refer to a non-final variable x inside an inner class defined in a different method

涓嬮潰鏉ュ垎鏋愪笅杩欎釜闂:

杩界┒鍏舵牴鏈師鍥犲氨鏄綔鐢ㄥ煙涓彉閲忕殑鐢熷懡鍛ㄦ湡瀵艰嚧鐨;

重庆快3下载app送28—官方网址22270.COM棣栧厛闇瑕佺煡閬撶殑涓鐐规槸: 鍐呴儴绫诲拰澶栭儴绫绘槸澶勪簬鍚屼竴涓骇鍒殑锛屽唴閮ㄧ被涓嶄細鍥犱负瀹氫箟鍦ㄦ柟娉曚腑灏变細闅忕潃鏂规硶鐨勬墽琛屽畬姣曞氨琚攢姣併

杩欓噷灏变細浜х敓闂锛氬綋澶栭儴绫荤殑鏂规硶缁撴潫鏃讹紝灞閮ㄥ彉閲忓氨浼氳閿姣佷簡锛屼絾鏄唴閮ㄧ被瀵硅薄鍙兘杩樺瓨鍦(鍙湁娌℃湁浜哄啀寮曠敤瀹冩椂锛屾墠浼氭浜)銆傝繖閲屽氨鍑虹幇浜嗕竴涓煕鐩撅細鍐呴儴绫诲璞¤闂簡涓涓笉瀛樺湪鐨勫彉閲忋備负浜嗚В鍐宠繖涓棶棰橈紝灏卞皢灞閮ㄥ彉閲忓鍒朵簡涓浠戒綔涓哄唴閮ㄧ被鐨勬垚鍛樺彉閲忥紝杩欐牱褰撳眬閮ㄥ彉閲忔浜″悗锛屽唴閮ㄧ被浠嶅彲浠ヨ闂畠锛屽疄闄呰闂殑鏄眬閮ㄥ彉閲忕殑"copy"銆重庆快3下载app送28—官方网址22270.COM杩欐牱灏卞ソ鍍忓欢闀夸簡灞閮ㄥ彉閲忕殑鐢熷懡鍛ㄦ湡銆傛垜浠彲浠ラ氳繃鍙嶇紪璇戠敓鎴愮殑 .class 鏂囦欢鏉ュ疄楠岋細

鍦ㄥ懡浠よ绐楀彛涓厛鎵ц鍛戒护 javac OutClass.java 杩涜缂栬瘧,浼氬緱鍒颁袱涓枃浠: OutClass$1InClass.class銆丱utClass.class锛

javap 鏄 Java class 鏂囦欢鍒嗚В鍣紝鍙互鍙嶇紪璇戯紝涔熷彲浠ユ煡鐪媕ava缂栬瘧鍣ㄧ敓鎴愮殑瀛楄妭鐮併

杩欓噷鎴戜滑鍙互鍐嶆墽琛屽懡浠 javap -privateOutClass$1InClass 杩涜鍙嶇紪璇戯紝 -private 琛ㄧず鏄剧ず鎵鏈夌被鍜屾垚鍛橈紝鎵ц鍚庝細寰楀埌濡備笅缁撴灉锛

重庆快3下载app送28—官方网址22270.COM鍙鏂规硶涓殑灞閮ㄥ彉閲忓疄闄呬笂纭疄浼氬鍒朵负鍐呴儴绫荤殑鎴愬憳鍙橀噺浣跨敤銆

闂鍙堝嚭鐜颁簡锛氬皢灞閮ㄥ彉閲忓鍒朵负鍐呴儴绫荤殑鎴愬憳鍙橀噺鏃讹紝蹇呴』淇濊瘉杩欎袱涓彉閲忔槸涓鏍风殑锛屼篃灏辨槸濡傛灉鎴戜滑鍦ㄥ唴閮ㄧ被涓慨鏀逛簡鎴愬憳鍙橀噺锛屾柟娉曚腑鐨勫眬閮ㄥ彉閲忎篃寰楄窡鐫鏀瑰彉锛屾庝箞瑙e喅闂鍛紵

灏卞皢灞閮ㄥ彉閲忚缃负final锛屽瀹冨垵濮嬪寲鍚庯紝鎴戝氨涓嶈浣犲啀鍘讳慨鏀硅繖涓彉閲忥紝灏变繚璇佷簡鍐呴儴绫荤殑鎴愬憳鍙橀噺鍜屾柟娉曠殑灞閮ㄥ彉閲忕殑涓鑷存с傝繖瀹為檯涓婁篃鏄竴绉嶅Ε鍗忋

鑻ュ彉閲忔槸final鏃讹細

  • 鑻ユ槸鍩烘湰绫诲瀷锛屽叾鍊兼槸涓嶈兘鏀瑰彉鐨勶紝灏变繚璇佷簡copy涓庡師濮嬬殑灞閮ㄥ彉閲忕殑鍊兼槸涓鏍风殑锛

  • 重庆快3下载app送28—官方网址22270.COM鑻ユ槸寮曠敤绫诲瀷锛屽叾寮曠敤鏄笉鑳芥敼鍙樼殑锛屼繚璇佷簡copy涓庡師濮嬬殑鍙橀噺寮曠敤鐨勬槸鍚屼竴涓璞°

重庆快3下载app送28—官方网址22270.COM杩欏氨浣垮緱灞閮ㄥ彉閲忎笌鍐呴儴绫诲唴寤虹珛鐨勬嫹璐濅繚鎸佷竴鑷淬

鍘熸枃閾炬帴锛歨ttp://blog.csdn.net/sf_climber/article/details/78326984