为了账号安全,请及时绑定邮箱和手机立即绑定

Java匿名内部类访问外部变量,外部变量被标志为final?

标签:
Java

匿名内部类可以访问外部方法的变量

  //初始化按钮的监听器
    public void initListener(Button btn ){
        final int name = 12; //必须标记为final

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                btn.setText(name); //动态改变按钮的文字
            }
        });
    }

外部方法出栈后,内部类在内存中依然存在,但是无法再访问到局部变量

为此,JAVA 将外部方法的变量复制并传递给内部类

匿名内部类修改这个变量的值,但是和外部的变量已经没有关系

也是说无法修改外部方法的变量的值

为此,直接使用 final 将外部变量的值约定死

点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
63
获赞与收藏
512

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消