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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//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金币

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马