java中内部类定义在局部变量位置时是否还能访问局部变量

时光飞扬 2017-01-11 11:52:54
初学java,有什么提问不专业的地方希望大家指正

按照书中所说,内部类当定义在函数内部的时候是没办法访问函数中的局部变量的,但是下面是我的程序,为什么可以编译通过呢,还是说我理解错了

class Innerdemo
{
public static void main(String[] args)
{
outer o = new outer();
o.show(2);
}
}
class outer
{
public void show(int y)
{
int c = 100;
class inner
{
void method()
{
System.out.println("c="+c);
System.out.println("y="+y);
}
}
inner i = new inner();
i.method();
}
}
...全文
289 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻梦csdn 2017-04-15
  • 打赏
  • 举报
回复
你的inner类是咋show方法内的,相当与局部变量,方法内的局部变量可以互相访问 如果inner实在show方法为外,相当于outer的成员变量,inner内就不能访问show方法内的成员类。
soton_dolphin 2017-01-12
  • 打赏
  • 举报
回复
局部变量必须是声明为final,或者作用上是final,一旦赋值,就不能改变 你再方法里没有改变c得值,所以作用上是final 变量,可以使用
ryuugu_rena 2017-01-12
  • 打赏
  • 举报
回复
lz用的jdk8,这是新版本的特性,如果是jdk7就不行了。不过无论有没有fianl,都是不能修改的。

50,537

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧