对于fun里面而言,就不同了,在整个fun期间,aa不可变,另外final还会改变变量的生命周期,参考内部类,interface X {void x();}
.....
X getX(final int x) {
  int nonFinal = 0;
  return new X() {
    public void x() {
      System.out.println(x);
    }
  };
  //<<--- Death of nonFinal
}void a() {
  X xObj = getX(0);
  xObj.x(); // <<---Variable X Still Alive!
}

解决方案 »

  1.   

    自然是在整个fun函数内aa的值不可变的意思如果不设为final变量的话你带入的参数变量aa是可以用赋值语句改变值的现在就不可以了
      

  2.   

    shine333(enihs)说的和final有关系么?
      

  3.   

    哦,我明白了
    shine333(enihs)说的关键在于这一句
    System.out.println(x);我没有注意到,抱歉
      

  4.   

    shine333(enihs)错了,我找到答案了,final并不会改变变量的生命周期,内部类只不过保留了一份拷贝而已,final的作用是保证了内部类拷贝的是用户传递进来的那个引用。