黑马程序员技术交流社区

标题: 关于局部内部类访问局部变量的时候要使用final修饰? [打印本页]

作者: MR.Sun    时间: 2014-10-12 00:39
标题: 关于局部内部类访问局部变量的时候要使用final修饰?
class  Demo13
{
        public static void main(String[] args)
        {
                Outer out=new Outer();
                out.show();
        }
}
class Outer
{
        public void show()
        {
                int x=100;//当局部内部类调用到外部类的局部变量时,局部变量要用final修饰,
                                      可是为什么我不加final一样编译成功,而且答案跟加了fina相同?
                class Inner
                {
                        int y=50;
                        public void print()
                        {
                                System.out.print(x+"局部内部类的print方法。。。。。");
                        }
                }
                Inner in=new Inner();
                in.print();
        }       
}


作者: 杨佳名    时间: 2014-10-12 00:41
楼主JDK1.8版本的。这是1.8的新特性。jdk1.8在编译的时候自动把局部内部类使用的局部变量改成final了,可以尝试改变一下x的值,会发现依旧会因为声明了final而报错。
作者: MR.Sun    时间: 2014-10-12 00:49
杨佳名 发表于 2014-10-12 00:41
楼主JDK1.8版本的。这是1.8的新特性。jdk1.8在编译的时候自动把局部内部类使用的局部变量改成final了,可以 ...

哦  原来是这样啊。我是说呢,我之前在我一个朋友的电脑上面编译的,代码一模一样,在我的上面就通过,在他的上面就失败。。。。多谢啊。。。
作者: HM2014nuli    时间: 2014-10-12 07:56
楼上说得对,这是1.8的新特性,在1.7运行时是这样的Demo13.java:20: 错误: 从内部类中访问本地变量x; 需要被声明为最终类型
                               System.out.print(x+"局部内部类的print方法。。。 。。");                                                  ^ 1 个错误

作者: 香草芭芙    时间: 2014-10-12 08:20
1.7 | 1.8 新特性 没有中文api , 求分享 .




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