A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 崔利鹏 于 2012-11-17 06:58 编辑

方法中的内部类能不能访问方法中的局部变量 ?

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

5 个回复

倒序浏览
应该是可以的,我记得需要加final修饰。才可以,表示此值不可改变,这样在内部类里就有了一个此变量的拷贝,可以访问了。不然的话,方法及方法的成员要比内部类的生命周期小,怎么会访问到呢

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
可以访问,需要将变量声明为final
回复 使用道具 举报
可以访问的。引用《Thinking In Java》里的说法:“局部内部类能访问所在方法中的final类型的参数和变量”。 如果定义一个匿名内部类,并且希望它使用一个在其外部定的对象,那么编译器会要求其参数引用是final 的。

示例代码:

public class Tester {  
    public static void main(String[] args) {  
        A a = new A();  
        C c = new C();  
        c.shoutc(a.shout(5));  
    }  
}  
////////////////////////////////////////////////////////  
class A {  
    public void shouta() {  
        System.out.println("Hello A");  
    }  
  
    public A shout(final int arg) {  
        class B extends A {  
            public void shouta() {  
                System.out.println("Hello B" + arg);  
            }  
        }  
        return new B();  
    }  
}  
////////////////////////////////////////////////////////  
class C {  
    void shoutc(A a) {  
        a.shouta();  
    }  
}  

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
方法内部的内部类是局部内部类,它只能访问所在方法中的final类型的参数和变量。

点评

有时间可以去申请改下名  发表于 2012-11-17 00:29
回复 使用道具 举报
iacky2 发表于 2012-11-16 20:25
方法内部的内部类是局部内部类,它只能访问所在方法中的final类型的参数和变量。 ...

好嘞~滔哥
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马