黑马程序员技术交流社区

标题: 局部内部类能访问非final的局部变量问题 [打印本页]

作者: 杨佳名    时间: 2014-9-18 21:53
标题: 局部内部类能访问非final的局部变量问题
本帖最后由 杨佳名 于 2014-9-21 11:16 编辑

刚刚开始学习java,基础部分学到了内部类。今天遇到一个问题
class Outer
{
        void method()
        {
                int y = 2;
                class Inner
                {
                        void show()
                        {
                                //y=5;
                                System.out.println("Inner y==="+y);
                        }
                }
                new Inner().show();
        }
}


class InnerClassDemo3
{
        public static void main(String[] args)
        {
                new Outer().method();
        }
}
局部变量y没有定义final,可是编译运行都过了,跟视频描述的不一样,之后向学校学长问,也不知道怎么回事。后来,又下载一个JDK1.7,编译就出错了。查阅1.8新特性才知道,jdk1.8在编译的时候自动把局部内部类使用的局部变量改成final了。又试了一下,虽然没有定义final,但更改y的值后,编译同样出错。
虽然因为这个花了几个小时,但最终搞出来结果还是蛮开心的,激动的来发我第一个帖子。
黑马,我一定会来的!




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