作者jej (我开始困惑了)
看板java
标题Re: [问题]inner class存取其外部成员的问题
时间Wed Jul 4 23:37:56 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??
: }
: };
: }
: 想请教各位,为什麽我在建构式之外先宣告过,就不会编译错误了呢??
: 或是请大家指点我一下,该去查什麽相关的资料,可以解释这个现象呢??
: 谢谢各位~
用heap来解释不晓得通不通......(解释错误请见谅.....)
↑运算元
↑动态变数
↑建构子
↑静态变数
所以在heap中摆放顺序是
ClassA refA
建构子指定 refA instance
动态变数 Inner Class
运算元
不知道这样子通否?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.232.237.53