Java中内部类中使用外面变量为什么final修饰?

所以final从语法上约束了实际上两个不同变量的一致性(表现为同一变量).

 

我的理解:

例如这样的代码:

public void test(String str){
  str="abc";  
}

其实执行完毕了,执行的只是原来str的一个镜像文件,根本不会影响原来的变量。

内部类是属于外部类的一个组件

class Outer{
    
  private String str;
    

     class Inner{
       public void test(){
          System.out.println(str);  
        }
    }

  public static void main(String[] args){
    Outer.Inner in=new Outer().new Inner();
    this.str="ad";
   thsi.str="bc";        
  }      
}

我想,如果外部类的变量不是final的,那么在第一次生成内部类对象之后,内部类的方法执行结果都会随着外部类该变量的改变而改变。但是该变量应该是属于内部类的一个组件,也就是说你随意操作外部类对象就可以改变它生成的内部类对象,这显然是错误的。所以我们将使用的外部类对象定义为final,保证了外部类和内部类的表现的一致性。

 

 

不是很懂。原文链接:

http://blog.csdn.net/axman/article/details/1460544                            

posted @ 2016-11-01 11:34  guodaxia  阅读(201)  评论(0编辑  收藏  举报