作者calais007 (浅水中)
看板java
标题Re: [问题]inner class存取其外部成员的问题
时间Wed Jul 4 08:21:26 2007
※ 引述《losesong (shen)》之铭言:
: 大家好
: 小弟在练习使用匿名的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??
: }
: };
: }
: 想请教各位,为什麽我在建构式之外先宣告过,就不会编译错误了呢??
: 或是请大家指点我一下,该去查什麽相关的资料,可以解释这个现象呢??
: 谢谢各位~
这个是scope的问题
外层的block宣告的变数可以给内层的block用
同层的block内的变数不能互用.
例如:
{
int a=0;
{
a=1; //ok
}
}
------------------
{
int a=0;
}
{
a = 1; //error cannot find the symbol
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.105.36