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