黑马程序员技术交流社区

标题: 内部类访问局部变量需要申明最终类型? [打印本页]

作者: 阿秋    时间: 2015-8-23 15:19
标题: 内部类访问局部变量需要申明最终类型?
class Demo
{
        int x=3;
        void function()
        {
                int y=4;
                class Timo                                                                                                        //在局部的内部类是不允许用修饰符来修饰的,例如static
                {
                        void run()                                                                                                //这就导致了局部内部类中的方法是不允许出现静态的
                        {
                                System.out.println("引用的数是:"+Demo.this.x);                //局部内部类是可以引用外部类的变量的
                                System.out.println("引用的数是:"+y);                               
                        }
                }
                new Timo().run();
        }
}
class Q1
{
        public static void main(String[] args)
        {
                new Demo().function();
        }
}
//为什么我没有将y声明为最终类型,还是可以运行出来而且不报错呢?


作者: sunsteam    时间: 2015-8-23 22:23
本帖最后由 sunsteam 于 2015-8-23 22:31 编辑

新的jdk会在局部内部类读取局部变量的时候自动补写final以保证程序运行 , 但是如果这个变量做了final变量不允许做的事, 比如他被赋值了 编译就失败.  

你在函数里补个y++或者别的什么看看就会看到新版提示  但是不赋值是可以运算的  比如System.out.println("引用的数是:"+(y+x));  




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