黑马程序员技术交流社区

标题: 局部内部类问题? [打印本页]

作者: Geek_001    时间: 2014-6-22 13:08
标题: 局部内部类问题?
本帖最后由 Geek_001 于 2014-6-22 20:50 编辑

为何运行不能通过?

获.PNG (81.25 KB, 下载次数: 117)

代码

代码

捕获.PNG (2.23 KB, 下载次数: 124)

运行结果

运行结果

作者: m313786372    时间: 2014-6-22 13:30
本帖最后由 m313786372 于 2014-6-22 13:40 编辑

被final修饰的变量不可以被改变,其实是一个常量。因此a++;报错。
void method(final int a)里的final去掉,这里就可以过……
但是又因为你的Inner里访问了a,所以这个a必须是final的……:L好像只能把a++;删了完事。。。

作者: Geek_001    时间: 2014-6-22 15:07
m313786372 发表于 2014-6-22 13:30
被final修饰的变量不可以被改变,其实是一个常量。因此a++;报错。
void method(final int a)里的final去掉 ...

因为局部内部类访问局部变量(定义在外部类成员函数内)时,必须把局部变量用final修饰
否则不能访问,但局部变量已经被fianl修饰了,而a++又会改变局部变量的值,所以矛盾了?
作者: Geek_001    时间: 2014-6-22 20:44
Geek_001 发表于 2014-6-22 15:07
因为局部内部类访问局部变量(定义在外部类成员函数内)时,必须把局部变量用final修饰
否则不能访问,但 ...

明白了,两全的办法?暂时木想出来。




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