[問題] 編譯過程。

看板java作者 (就像個金魚魚缸。)時間17年前 (2009/03/10 17:41), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
 幫朋友問的,  也不知道下這樣的標題對不對,  感覺比較像內部與外部變數定義問題?  原程式碼與問題如下: //以下是原題目程式碼,題目要求指出錯誤之處 import static java.lang.System.*; class Outer { String s1 = "Outer object var"; public void omethod () { String s2 = "Outer method var"; class Inner { String s3 = "Inner object var"; public void imethod () { String s4 = "Inner method var"; out.println(s1); out.println(s2); out.println(s3); out.println(s4); } } } }  這是他的問題:  /*  編譯過後,錯誤是在s2的變數沒有宣告成final  書上是寫,因為Inner是屬於匿名內部類別  和s2都是屬於omethod()的變數  所以要把s2宣告成final才能在Inner裡使用  上網去查  是說把s2宣告成final之後  編譯時會在Inner裡面生成一個s2的隱藏複本變數,供Inner使用  我的問題是為什麼會這樣??  我只知道宣告成final代表該變數是常數,不可變更  可是為什麼在這邊編譯卻會這樣執行??  */ --  我將我肢解,  腳,生殖器,頭,  最後,  卻忘了沒有手可以將手與身體的我分離。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.68.226 ※ 編輯: HuangDon 來自: 118.232.68.226 (03/10 17:43)

03/12 11:59, , 1F
03/12 11:59, 1F
文章代碼(AID): #19jZMriU (java)