看板 java 關於我們 聯絡資訊
大家好 小弟在練習使用匿名的inner class的時候遇到了點問題 請大家指點迷津一下 當我在inner class中去存取其外部class的某個field時 若這個field在外部class的建構式中才去宣告,那編譯時就會出現錯誤訊息 訊息內容是cannot find symbol,而該symbol就是指那個field 程式碼的大略示意圖如下: public class OuterClass { public OuterClass() { ClassA refA = new ClassA(); //ClassA有一個我想用到的methodA } InnerClass inner = new InnerClass() { public void innerMethod() { refA.methodA(); //此處發生編譯錯誤:cannot find symbol,symbol:varible refA } }; } ===========================換個方法=================================== 但是,假如我在建構式之外先宣告refA,進了建構式再進一步將它指派給ClassA, 此時就可通過編譯 程式碼的大略示意圖如下: public class OuterClass { ClassA refA; public OuterClass() { refA = new ClassA(); //ClassA有一個我想用到的methodA } InnerClass inner = new InnerClass() { public void innerMethod() { refA.methodA(); //這一次通過編繹了,why?? } }; } 想請教各位,為什麼我在建構式之外先宣告過,就不會編譯錯誤了呢?? 或是請大家指點我一下,該去查什麼相關的資料,可以解釋這個現象呢?? 謝謝各位~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.62.37 ※ 編輯: losesong 來自: 140.129.62.37 (07/04 02:18) ※ 編輯: losesong 來自: 140.129.62.37 (07/04 02:26) ※ 編輯: losesong 來自: 140.129.62.37 (07/04 02:38) ※ 編輯: losesong 來自: 140.129.62.37 (07/04 02:43) ※ 編輯: losesong 來自: 140.129.62.37 (07/04 02:43) ※ 編輯: losesong 來自: 140.129.62.37 (07/04 02:45) ※ 編輯: losesong 來自: 140.129.62.37 (07/04 02:46)