匿名内部类

今天碰到个问题,循环绑定了click事件后,变量都是最后一个。

原来匿名内部类要用final来声明所在的方法的变量。

-----------------------------------

因为虽然匿名内部类在方法的内部,但实际编译的时候,内部类编译成Outer.Inner,

这说明内部类所处的位置和外部类中的方法处在同一个等级上,

外部类中的方法中的变量或参数只是方法的局部变量,这些变量或参数的作用域只在这个方法内部有效。

因为编译的时候内部类和方法在同一级别上,所以方法中的变量或参数只有为final,内部类才可以引用。

final 关键字是什么意思

--------------------------------

就是用final 定义变量后 就不可在赋值。

例如 final int i=100。这个i的值永远都是100。

但是对于变量来说又不一样,只是标识这个引用不可被改变,

例如 final File f=new File("c:\\test.txt");

那么这个f一定是不能被改变的,如果f本身有方法修改其中的成员变量,

例如是否可读,是允许修改的。

形象的比喻:一个女子定义了一个final的老公,这个老公的职业和收入都是允许改变的,只是这个女人不会换老公而已。

原文地址:https://www.cnblogs.com/shenbin/p/2437788.html