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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨佳名 于 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的值后,编译同样出错。
虽然因为这个花了几个小时,但最终搞出来结果还是蛮开心的,激动的来发我第一个帖子。
黑马,我一定会来的!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马