黑马程序员技术交流社区

标题: 局部内部类在访问其所在方法局部变量问题 [打印本页]

作者: 新人—小明同学    时间: 2016-7-16 23:17
标题: 局部内部类在访问其所在方法局部变量问题
局部内部类在访问他所在方法中的局部变量必须用final修饰,为什么?
不写final也没有报错呀?

作者: 新人—小明同学    时间: 2016-7-16 23:19
顶!d=====( ̄▽ ̄*)b
作者: jmf332376308    时间: 2016-7-16 23:47
不写不报错,但是用的时候就会报错。
作者: longforus    时间: 2016-7-16 23:56
  1. public class TestInnerClass {
  2.     public static void main (String[] args) {
  3.         int a = 10;
  4.         class InnerClass {
  5.             int b = a;
  6.             void print(){
  7.                 System.out.println (a+1);
  8.             }

  9.         }
  10.        new InnerClass ().print ();
  11.     }
  12. }
复制代码


我试了下 怎么也能运行呢?
同求指点
作者: yuxing    时间: 2016-7-18 21:09
jdk1.8之后会默认加上final. 1.7之前必须加上,原因是局部变量在栈中使用完之后会弹栈消失,而内部类的对象依然可能调用该局部变量.所以必须延长局部变量的生命周期,即加上final进入常量池~~~~~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2