匿名内部内访问外部内局部变量必须是final

fun(final int seconds){

// final int i[] = {seconds}; //这样定义确实感觉很别扭

setTimer(new Timer());

TimerTask task = new TimerTask() {

int i = seconds;   //可以定义变量到内部内来直接操作,不用在内部类外部定义final数组了

@Override

public void run() {i--;...}}

}

1、匿名内部内访问外部内局部变量必须是final

解析: 外部局部变量的生命周期可以早已结束,所以为了保持访问一致,使用final

2、匿名内部类变量操作,直接定义在匿名内部类就可以了

解析:匿名内部类的变量操作,没有必要定义在外部


推荐文章:https://www.cnblogs.com/DarrenChan/p/5738957.html

猜你喜欢

转载自blog.csdn.net/hqyhqyhq/article/details/79423030
今日推荐