黑马程序员技术交流社区

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

作者: 有陷阱快跑丶    时间: 2014-11-16 22:20
标题: 局部内部类访问局部变量
class Outer
{
        int num = 3;
        void method()
        {
                int y = 6;
                class Inner
                {       
                        void show()
                        {
                                System.out.println(y);
                        }
                }
                new Inner().show();

        }
}





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

- -我没有final 局部变量啊  为啥能编译运行
作者: hailong    时间: 2014-11-16 22:36
必须加final的,不加的话编译会报错,我用你的代码直接编译的

1.jpg (26.32 KB, 下载次数: 27)

1.jpg

作者: 有陷阱快跑丶    时间: 2014-11-16 22:50
hailong 发表于 2014-11-16 22:36
必须加final的,不加的话编译会报错,我用你的代码直接编译的

- -为啥我哦这里直接通过了啊  不能忍啊 :Q
作者: hailong    时间: 2014-11-16 22:53
有陷阱快跑丶 发表于 2014-11-16 22:50
- -为啥我哦这里直接通过了啊  不能忍啊

你再重新编译试一下,这个肯定是需要加final的,如果不加的话无论是用命令行编译还是用eclipse都是会报错的
作者: 有陷阱快跑丶    时间: 2014-11-16 23:05
hailong 发表于 2014-11-16 22:53
你再重新编译试一下,这个肯定是需要加final的,如果不加的话无论是用命令行编译还是用eclipse都是会报错 ...

恩恩  我试下  你早点睡哈
作者: 完美是芬    时间: 2014-11-16 23:06
有陷阱快跑丶 发表于 2014-11-16 22:50
- -为啥我哦这里直接通过了啊  不能忍啊

我怎么跟你一样啊,能编译通过:funk:

QQ截图20141116230537.png (116.97 KB, 下载次数: 28)

QQ截图20141116230537.png

作者: hailong    时间: 2014-11-16 23:25
本帖最后由 hailong 于 2014-11-16 23:26 编辑
完美是芬 发表于 2014-11-16 23:06
我怎么跟你一样啊,能编译通过

呃。。。这我就不知道是什么情况了,我这里命令行和eclipse全都会报错的,你的运行结果正确吗?
作者: dong53821713    时间: 2014-11-16 23:36
必须加final修饰
作者: 有陷阱快跑丶    时间: 2014-11-16 23:39
完美是芬 发表于 2014-11-16 23:06
我怎么跟你一样啊,能编译通过

是啊  好神奇:)
作者: MR.Sun    时间: 2014-11-16 23:49
编译通过的都是使用的JDK1.8的  在1.8中  是默认加上final的     我以前也问过这个问题  
作者: 有陷阱快跑丶    时间: 2014-11-16 23:59
MR.Sun 发表于 2014-11-16 23:49
编译通过的都是使用的JDK1.8的  在1.8中  是默认加上final的     我以前也问过这个问题   ...

额额  了解了   谢谢解惑:lol
作者: MR.Sun    时间: 2014-11-17 00:01
有陷阱快跑丶 发表于 2014-11-16 23:59
额额  了解了   谢谢解惑

没事,以前我也跟你一样 也是差不多这个时候纠结这东西,  同道中人啊 准备去哪一期
作者: 田峻菘    时间: 2014-11-17 00:01
编译不能通过,你装的应该是JDK1.8,JDK1.8默认加final了
作者: 有陷阱快跑丶    时间: 2014-11-17 00:12
MR.Sun 发表于 2014-11-17 00:01
没事,以前我也跟你一样 也是差不多这个时候纠结这东西,  同道中人啊 准备去哪一期 ...

深圳54期额  压力大啊  没基础 正在自学中:P
作者: 有陷阱快跑丶    时间: 2014-11-17 00:30
田峻菘 发表于 2014-11-17 00:01
编译不能通过,你装的应该是JDK1.8,JDK1.8默认加final了

恩恩。。
作者: cbb    时间: 2014-11-17 08:32
这个是个特列  访问成员变量时 外部类名.this.变量名   
访问局部变量是需要局部变量加上final修饰的。不然就报错~~
作者: zhangyangLengen    时间: 2014-11-17 08:44
可能要看看你们的编译器的版本和JRE的版本了
作者: 完美是芬    时间: 2014-11-17 09:35
MR.Sun 发表于 2014-11-17 00:01
没事,以前我也跟你一样 也是差不多这个时候纠结这东西,  同道中人啊 准备去哪一期 ...

你学了多久?你进哪一期了?




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