A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

陈闪

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

方法中的内部类不是不能访问方法中的局部变量的吗?为何我调试时就可以了?没有加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"
图片不知道怎么弄上来。。。。。真的编译通过并运行了。。。。。

1 个回复

正序浏览
额,貌似是这样的,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);
                        }
                 }
          }

评分

参与人数 1黑马币 +10 收起 理由
陈闪 + 10 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马