内部类访问局部变量为什么要用final修饰-阿里云开发者社区

开发者社区> anmypeng1> 正文

内部类访问局部变量为什么要用final修饰

简介:
+关注继续查看

/**

 * 内部内访问的局部变量必须加final修饰符,因为方法入参里面的局部变量生命周期在方法体之内,而内部类的生命周期是成员级别的
 * 如果不加final关键字:那么当myRun方法执行完成之后name的生命周期就结束了
 * 如果加上final关键字:内存中就会保存一份该内部变量的副本,当内部类访问时其实访问的是这个副本,
 * 实际上:内部类会将这个局部变量复制为它本身的一个成员变量,就相当于把局部变量的生命周期延长了
 */
public static void myRun(final String name){
    new Thread(){
        public void run(){
            try
            {
                Thread.sleep(1000);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
            
            System.out.println(name);
        }
    }.run();
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
php 输出带变量字符串(echo 函数的应用)
转自:  http://www.cnblogs.com/devcjq/articles/2306150.html 学习PHP从最简单的开始;echo, print   说明:echo "原来关联数组成员要这样输出 { $temp["user"] } \n";//关联数组元素输出时要用“{ }”...
639 0
简单说明:list.forEach 中变量必须为 final 的问题
可能有些人没遇到过 list.forEach 中变量必须为 final 的问题,那就先举两个例子 示例1,如下: public static void main(String[] args) { List<String> stringList = new ArrayList<>(); stringList.
1940 0
Spring Boot入门(12)实现页面访问量统计功能
  在日常的网站使用中,经常会碰到页面的访问量(或者访问者人数)统计。那么,在Spring Boot中该如何实现这个功能呢?   我们的想法是比较简单的,那就是将访问量储存在某个地方,要用的时候取出来即可,储存的位置可选择数据库或者其他文件。
2630 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4398 0
Jenkins内置环境变量的使用
一、查看Jenkins有哪些环境变量 1、新建任意一个job 2、增加构建步骤:Execute shell 或 Execute Windows batch command 3、点击输入框下方的“可用环境变量”   4、可以看到有如下变量供使用:  变量名 解释 BU...
715 0
shell 全局和局部变量
/******************************************************************** * shell 全局和局部变量 * 声明: * 到目前为止,在写shell脚本的时候,经常被shell的函数中的变量 * 作用域搞得糊涂,于是今天特意查了点资料,看到底怎么回事。
596 0
+关注
9
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载