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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ysdolls 中级黑马   /  2014-8-19 18:11  /  712 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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修饰后 不是一样生命周期随着方法的结束而结束吗?不然不能重新赋值的。


0 个回复

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