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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

方法中的内部类可以访问方法中的局部变量,但是必须在局部变量前加修饰符final,否则将会编译错误。
   
    原因:在内存中,方法的局部变量是存储在堆栈中的, 当方法返回时,局部变量对应的栈就被回收了,当方法内部类去访问局部变量时就会发生错误。
    在java里面修饰词 final修饰过的变量的值是不可以被修改的,当在变量前加上final时,这样局部变量就会被分配在堆内存中。
    这样在进行编译时就不会出现访问变量的错误。
public class Test2 {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
      

//例子:
  example();
}
  private static void example() {
         final int a = 10;
         //String b = 20;  
         // 创建一个方法里的局部内部类  
         class Test
         {
             public void in() {
                 System.out.println(a);
                 //System.out.println(b);  
             }
         }
         Test test = new Test();
         //调用内部类方法
         test.in();
  
     }
}

0 个回复

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