shen
2007-07-03 18:18:56 UTC
大家好
小弟在練習使用匿名的inner class的時候遇到了點問題
請大家指點迷津一下
當我在inner class中去存取其外部class的某個reference時
若這個reference在外部class的建構式中去宣告,那編譯時就會出現錯誤訊息
訊息內容是cannot find symbol,而該symbol就是指那個reference
程式碼的大略示意圖如下:
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)
小弟在練習使用匿名的inner class的時候遇到了點問題
請大家指點迷津一下
當我在inner class中去存取其外部class的某個reference時
若這個reference在外部class的建構式中去宣告,那編譯時就會出現錯誤訊息
訊息內容是cannot find symbol,而該symbol就是指那個reference
程式碼的大略示意圖如下:
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)