黑马程序员技术交流社区
标题:
内部类访问局部变量需要申明最终类型?
[打印本页]
作者:
阿秋
时间:
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