黑马程序员技术交流社区

标题: 方法中的内部类能不能访问方法中的局部变量,为什么? [打印本页]

作者: —__    时间: 2012-5-16 18:10
标题: 方法中的内部类能不能访问方法中的局部变量,为什么?
//6、方法中的内部类能不能访问方法中的局部变量,为什么?
//不能!因为虚拟机不支持会报错。
//除非用final修饰
class Outer{


void method(){
  
  @SuppressWarnings("unused")
  //int y=4; 如此定义局部变量时,编译无法通过,提示必须使用final修饰
  final int y=4;
  
  class Inner{
   void function(){
    System.out.println(y);
   }
  }
  new Inner().function();
  
  
}
}
这里有个疑问那就是为什么虚拟机不支持?
我在网上找了很多关于这个问题的答案,通篇代码下来都是最后验证到虚拟机不支持这一步上
而没有验证为什么虚拟机不支持的这一步。
按理说这样回答就可以了,但是我总感觉回答的有点残缺,就像把问题推卸到了虚拟机上,
但是到底为什么却依然不明白,所以我想知道到底为什么不可以呢?

希望回答的朋友能具体说明下,如果发代码最好能讲解一下,
如果代码只是验证到虚拟机不支持这一步上的话,就不必发了
真心求讲解,奖励50金币





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