为什么局部内部类访问外边的局部变量必须为final?
来源:互联网 发布:数据集成的两种方法 编辑:程序博客网 时间:2024/05/22 06:23
局部内部类访问外边的局部变量时,此变量必须为final类型
马克-to-win:就像我们永远有钱的限制一样,资源永远不是无限的。由于效率, 包大小等各方面的考虑,java的设计者们做出如下语法规定:局部内部类访问外边的局部变量时,此变量必须为final类型,马克-to-win:否则会 报一个错误:Cannot refer to a non-finalvariable i inside an inner class defined in a different method为什么?查一下,第二章的java堆和栈的区别:函数执行完后,Java会自动释放掉为函数里变量开辟的栈内存空间,该内存空间可以立即被另 作他用。马克-to-win:加了final标记,编译器会做处理,不这么做!
例2.6
class ShellMark_to_win {
int x = 100;//x是类变量, 内部类访问时不用加final。
void test() {
for (int i = 0; i < 2; i++) {
final int y=6;
final String str="aaa";
class Core {
void display() {
System.out.println("外部类的x=" + x+y+str);
}
}
Core inner = new Core();
inner.display();
}
// Core inner = new Core(); //错误找不到Core。
。。。。。。。。。。。。。。。。。
详情请进:http://www.mark-to-win.com/JavaBeginner/JavaBeginner4_web.html#LocalInnerClassFinal
马克-to-win:就像我们永远有钱的限制一样,资源永远不是无限的。由于效率, 包大小等各方面的考虑,java的设计者们做出如下语法规定:局部内部类访问外边的局部变量时,此变量必须为final类型,马克-to-win:否则会 报一个错误:Cannot refer to a non-finalvariable i inside an inner class defined in a different method为什么?查一下,第二章的java堆和栈的区别:函数执行完后,Java会自动释放掉为函数里变量开辟的栈内存空间,该内存空间可以立即被另 作他用。马克-to-win:加了final标记,编译器会做处理,不这么做!
例2.6
class ShellMark_to_win {
int x = 100;//x是类变量, 内部类访问时不用加final。
void test() {
for (int i = 0; i < 2; i++) {
final int y=6;
final String str="aaa";
class Core {
void display() {
System.out.println("外部类的x=" + x+y+str);
}
}
Core inner = new Core();
inner.display();
}
// Core inner = new Core(); //错误找不到Core。
。。。。。。。。。。。。。。。。。
详情请进:http://www.mark-to-win.com/JavaBeginner/JavaBeginner4_web.html#LocalInnerClassFinal
0 0
- 为什么局部内部类访问外边的局部变量必须为final?
- 为什么局部内部类访问局部变量,局部变量必须声明为final?
- 为什么匿名内部类访问当前方法的局部变量必须为final类型
- 为什么java内部类访问局部变量必须声明为final?
- java中内部类访问局部变量的时候,为什么变量必须加上final修饰
- 内部类访问局部变量的时候,为什么变量必须加上final修饰
- 内部类访问局部变量的时候,为什么变量必须加上final修饰(转)
- 内部类访问局部变量的时候,为什么变量必须加上final修饰
- 为什么匿名内部类调用的方法内局部变量必须为final
- 为什么匿名内部类调用的方法内局部变量必须为final
- 为什么匿名内部类调用的方法内局部变量必须为final
- 为什么匿名内部类调用的方法内局部变量必须为final
- 局部内部类为什么只能访问final局部变量?
- 局部内部类为什么只能访问final局部变量?
- 关于局部内部类访问所在方法的参数或局部变量为什么必须是final的
- 为什么局部内部类和匿名内部类只能访问final的局部变量?
- java中内部类访问局部变量为什么要定义局部变量为final
- 局部内部类 局部内部类访问局部变量必须用final修饰
- 借用PortAudio采集和播放音频
- 枚举(enum)
- 【iOS】深入浅出 Cocoa 之消息
- struct和typedef struct的区别
- 根据用户Id和name,取得用户的主页和图片地址
- 为什么局部内部类访问外边的局部变量必须为final?
- HDU 1059 Dividing dp背包题解
- xUtils简介 (源于afinal框架是一个开源的android的orm和ioc应用开发框架)
- CopyOnWriteArrayList接口详解
- 在cell中添加长按手势弹出UIAlertView
- zabbix进程构成
- 选项卡调整子窗口位置和大小
- Makefile简明教程
- sqlite3数据的导入和导出