黑马程序员技术交流社区

标题: 关于内部类定义在局部使用外部变量的问题 [打印本页]

作者: hbcoding    时间: 2015-11-16 16:16
标题: 关于内部类定义在局部使用外部变量的问题
内部类定义在局部时,只能访问被final修饰的局部变量。不然编译就会报错。可是如下程序中,局部变量a并没有用final修饰,为什么编译可以通过,并且可以正常打印出a的值呢?求高手解答。
  1. public class Outer{
  2.         public void function(){
  3.                 int a = 3;
  4.                 class Inner{
  5.                         void method(){
  6.                                 System.out.println(a);
  7.                         }
  8.                 }
  9.                 new Inner().method();
  10.         }
  11.         public static void main(String[] args){
  12.                 Outer j = new Outer();
  13.                 j.function();
  14.         }
  15. }
复制代码

作者: hbcoding    时间: 2015-11-17 00:22
已经懂了,是JDK版本的问题,我用的是JDK1.8,即使不加final,编译也会通过,但编译器会默认该变量是final类型的。这也许是新版本的一个bug吧。




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