黑马程序员技术交流社区
标题:
关于局部内部类访问局部变量的时候要使用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