final的用法
为什么在方法体内的事件监听器内使用的变量必须是final? final 事件监听器
[解决办法]
这个是一个规则,就好比静态方法里面如果用全局变量,必须也得用静态变量一样,主要是jdk 发布的时候就进行了规定,此外编译器也自动规定了,如果不用final 就会报错
[解决办法]
用final声明的变量不可继承
[解决办法]
这的确是一个规则,但是有它的理由。
看这种形式:
interface Listener {
void onEvent (Object e);
}
class Test {
private static int staticVariable = 20;
private int variable = 5;
public static void main (final String[] args) {
final int stackVariable = 10;
Listener listener = new Listener() {
@Override
public void onEvent(int val) {
if (val != stackVariable)
variable = e;
else
staticVariable = e;
}
}
listener.onEvent(8);
}
}
只是个人的理解方式,严谨的说,这个说法也许不对,但帮助你理解可以有点用处