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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

对牛弹吉他

初级黑马

  • 黑马币:36

  • 帖子:20

  • 精华:0

© 对牛弹吉他 初级黑马   /  2014-11-19 16:10  /  1094 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Outer
{
        int x = 3;

        void method()
        {
                int y = 4;
                class Inner
                {
                        void function()
                        {
                                System.out.println(y);
                        }
                }
       
                new Inner().function();
               
        }
}


class  Noname2
{
        public static void main(String[] args)
        {
                new Outer().method();
        }

}
这个代码编译时不出错,不是说当内部类定义在局部时,不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量吗?

9 个回复

倒序浏览
编译能通过,你确定???
回复 使用道具 举报
JDK1.8新特性
回复 使用道具 举报
可能是JDK的原因吧!我的编译也能通过,而且也能运行,结果是4.     版本比毕老师的高。那个final在编译的时候自己又给加上了吧!
回复 使用道具 举报
kerner 发表于 2014-11-19 16:54
编译能通过,你确定???

要不然我还来这里提问?
回复 使用道具 举报

为什么以前不可以,1.8就可以了?
回复 使用道具 举报
JDK1.8在编译的时候 你要是没加final  他会默认的给你加上
回复 使用道具 举报
cbb 中级黑马 2014-11-19 18:36:54
8#
是的 当内部类定义在局部中的时候,还是可以访问外部数据的,但是访问内部类所在的局部内的变量时,这个变量要被final修饰,  至于版本的高低 不造~~我一直都用的1.6
回复 使用道具 举报
1.8新加上的!~~
回复 使用道具 举报
1。8的确实可以,估计是新特性,老师教的是只能访问被final修饰的局部变量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马