在方法内部定义的内部类引用外部变量时必须是引用final的。如果要用方法的参数,参数也必须final。

解决方案 »

  1.   

    原来如此。那书上怎麽没写呢?为什麽要final呢?
      

  2.   

    访问本地变量必须用final,如果是实例变量或类变量,就不用了!
      

  3.   

    我来晚了,那我补充两句!不对,不对之处,望各位指出!
    一个方法中定义的类,可以称为内部类!这个内部类只能访问这个方法中的FINAL变量,同时,也可以访问和这个方法同级的属性!
    例:public class A{
              int i;
              public void B(){
                  final int j = 20; 
                  class C{
                     public void D(){   
                          i = 10;       //ok
                          i = j;        //ok!但不能修改j的值!
                        }
                     }
              }
    }
      

  4.   

    定义为final 是有原因的:
    方法的存在时间都比较短,
    而类却不是
    所以在方法里的类就面临着一个矛盾
    定义为final了,
    是为了告诉garbage collection 
    里面的类的变量是不变的,你可以到时收集..