内部类中访问的局部变量需用final修饰的原因
来源:互联网 发布:免费购物的软件 编辑:程序博客网 时间:2024/06/14 15:58
此处的内部类指局部内部类(包括匿名内部类),因为只有局部内部类才可访问局部变量,普通非静态内部类和静态内部类不可能访问方法体内的局部变量。
需用final修饰的原因:
对于局部变量,作用域为该方法内,方法执行结束该局部变量也随之消失。但内部类可能会产生隐式的“闭包”,闭包使局部变量脱离它所在的方法继续存在。
public class ClosureTest{ public static void main(String[] args) { final String str = "Java"; new Thread(new Runnable() { public void run() { for(int i = 0; i < 100; ++i) System.out.println(str + " " + i); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } }).start();//此处执行完,main方法结束。但只要线程的run()未执行完,str的生命周期就没结束。 }}上例中内部类扩大了局部变量的作用域,若没用final修饰,也即变量的值可以随意改变,将会引起混乱。
- 内部类中访问的局部变量需用final修饰的原因
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
- Java8中 局部内部类访问的局部变量不必用final修饰
- 局部内部类访问的局部变量不必用final修饰,java8中
- 局部内部类只能访问局部中被final修饰的变量
- java中内部类访问局部变量的时候,为什么变量必须加上final修饰
- 局部内部类只能访问方法内被final修饰的局部变量
- “局部内部类只能访问被final修饰的局部变量”的解释
- 局部内部类只能访问被final修饰的局部变量
- 局部内部类为什么只能访问final修饰的局部变量
- 局部内部类访问的局部变量不必用final修饰
- Java内部类详解 及 局部内部类和匿名内部类只能访问局部final变量的原因
- 在java中, 方法的内部类可以访问方法中的局部变量,但必须用final修饰才能访问。
- 内部类访问局部变量的时候,为什么变量必须加上final修饰
- 内部类访问局部变量的时候,为什么变量必须加上final修饰(转)
- 内部类访问局部变量的时候,为什么变量必须加上final修饰
- 于java里方法的内部类只能访问被final修饰的局部变量和.
- 30分钟搞定Debian硬盘安装
- 联系人左右滑动功能的实现
- jquery04
- sqlplus 导出 excel文件
- gallery3d 代码分析之 glsurfaceview
- 内部类中访问的局部变量需用final修饰的原因
- Z-Stack 低功耗设置及电源管理
- 数学之路(2)-数据分析-R基础(1)
- 【Web Tricks 10】web编程中几个容易混淆的函数(概念)
- 启动Tomcat时,出现如下异常 java.io.EOFException
- C++内存管理
- 枚举类型的定义
- 快速 Moblie Web
- goahead登录提示框中服务器信息的修改