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

© Geek_001 中级黑马   /  2014-6-22 13:08  /  1083 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Geek_001 于 2014-6-22 20:50 编辑

为何运行不能通过?

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

代码

代码

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

运行结果

运行结果

4 个回复

倒序浏览
本帖最后由 m313786372 于 2014-6-22 13:40 编辑

被final修饰的变量不可以被改变,其实是一个常量。因此a++;报错。
void method(final int a)里的final去掉,这里就可以过……
但是又因为你的Inner里访问了a,所以这个a必须是final的……:L好像只能把a++;删了完事。。。
回复 使用道具 举报
m313786372 发表于 2014-6-22 13:30
被final修饰的变量不可以被改变,其实是一个常量。因此a++;报错。
void method(final int a)里的final去掉 ...

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

明白了,两全的办法?暂时木想出来。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马