黑马程序员技术交流社区

标题: 关于方法中的内部类能不能访问方法中的局部变量的问题!出bug了! [打印本页]

作者: 陈闪    时间: 2016-2-28 21:08
标题: 关于方法中的内部类能不能访问方法中的局部变量的问题!出bug了!
方法中的内部类不是不能访问方法中的局部变量的吗?为何我调试时就可以了?没有加final的!
下面是毕老师的代码,我就是按这个来编译的,编译通过了!
public class InnerClassDemo3{
        public static void main(String[] args) {
                Outer out = new Outer();
                out.method();
        }
}
class Outer{
        int x = 3;
        void method(){
                int y = 4;
                class Inner{
                        void function(){
                                System.out.println(y);
                 }
          }
                new Inner().function();
        }
}
运行结果是4
我的jdk版本为java version "1.8.0_65"
图片不知道怎么弄上来。。。。。真的编译通过并运行了。。。。。


作者: 玉质彼端    时间: 2016-2-28 22:10
额,貌似是这样的,JDK1.7会报“Cannot refer to a non-final variable a inside an inner class defined in a different method”编译错误,JDK1.8正常使用。当你在局部内部类里尝试修改方法中的局部变量值时才会报编译错误:
          void method(){
                int y = 4;
                class Inner{
                        void function(){
                                //Local variable s defined in an enclosing scope must be final or effectively final
                                //y = 5;
                                System.out.println(y);
                        }
                 }
          }




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