内部类访问局部变量为什么要用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();
}
目录
相关文章
|
23天前
final修饰的变量有三种
final修饰的变量有三种
8 0
|
2月前
|
C语言
学习static定义静态变量
学习static定义静态变量。
28 4
|
25天前
|
存储 监控 编译器
【C++】static关键字及其修饰的静态成员变量/函数详解
【C++】static关键字及其修饰的静态成员变量/函数详解
34 3
|
4月前
|
编译器
static关键字修饰成员变量与成员函数
1. static概念 声明 为static的类成员称为类的静态成员,用static修饰的成员变量,称为静态成员变量;用static修饰的成员函数,称为静态成员函数,都存放在堆区。 静态成员变量一定要在类外进行初始化。
80 0
|
5月前
|
存储 Java
浅谈匿名内部类和局部内部类只能访问final变量
浅谈匿名内部类和局部内部类只能访问final变量
38 0
关于static修饰的成员方法成员成员变量的相关讨论
关于static修饰的成员方法成员成员变量的相关讨论
|
8月前
|
设计模式 Java
3.2 内部类的类型:静态内部类
3.2 内部类的类型:静态内部类
48 0
|
8月前
|
Java
3.1 内部类的类型:成员内部类
3.1 内部类的类型:成员内部类
44 0
|
10月前
构造函数被private修饰后只能通过静态方法获得实例
构造函数被private修饰后只能通过静态方法获得实例
58 0
|
Java
Java中 类变量(static静态变量)和实例变量(非静态变量)的区别
Java中 类变量(static静态变量)和实例变量(非静态变量)的区别
231 0