黑马程序员技术交流社区

标题: 方法中的内部类访问局部变量问题。 [打印本页]

作者: ysdolls    时间: 2014-8-19 18:11
标题: 方法中的内部类访问局部变量问题。
本帖最后由 ysdolls 于 2014-8-19 19:03 编辑

当方法被调用运行完毕之后,局部变量就已消亡了。但内部类对象可能还存在,
直到没有被引用时才会消亡。此时就会出现一种情况,就是内部类要访问一个不存在的局部变量。
所以当方法中的内部类要访问方法中的局部变量时,必须是被final修饰的

这里,谁能帮忙举个栗子,就是方法结束后,内部类要访问局部变量的例子?
  1. public class Demo {

  2.         public static void main(String[] args) {
  3.                
  4.                 A a = new A();
  5.                 a.method(1);
  6.                 a.method(2);
  7.         }
  8. }
  9. class A{
  10.         int x =0;
  11.         void method(final int b){

  12.                 class B{
  13.                         void fun(){
  14.                                 System.out.println(b);
  15.                         }
  16.                 }
  17.                 new B().fun();
  18.         }
  19. }
复制代码
被final修饰后 不是一样生命周期随着方法的结束而结束吗?不然不能重新赋值的。







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