匿名内部类和局部内部类只能访问局部final变量

   我们知道,内部类与外部类的级别是相同的,内部类并不会因为在方法中就随着方法的执行完毕而被销毁,当外部类方法结束时,局部变量会销毁,但是内部类并不会被销毁,此时内部类对象还存在,这时候我们发现内部类对象就访问了一个不存在的变量,这就会产生矛盾,此时就必须使用final变量,此时final变量可以理解为一种“复制”,使这个变量还存在。   

  下面用代码来解释:


public class Test {
   public static void main(String[] args) {
        Test test=new Test();
        test.hjx(1);
    }
    public  void hjx( int a){
        int b=1;
        //匿名内部类
        new  Thread(){
            public void run(){
                System.out.println(a);
                System.out.println(b);
            }
        }.start();
    }
}

在IDEA中编写匿名内部类的代码,注意对于局部变量此时我没有加final,运行后结果为1  1,结果居然没有问题

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值