返回信息流我是在写Android程序,在其中一段代码中,OnClickListener的匿名类访问到了外部的非final变量,没报错。我感觉很困惑,请大家指点一二。代码简化出来如下:
...
private boolean isAllTextsCompleted;
...
protected void onCreate(Bundle b)
{
...
myButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
if(isAllTextsCompleted){
...
}
else{
...
}
}
});
}
这段代码没报错,请问这是为神马?
这是一条镜像帖。来源:北邮人论坛 / java / #25362同步于 2013/5/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
匿名类访问了非final变量!
drx
2013/5/15镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
isAllTextsCompleted是外部类的成员吧,只有局部变量才一定得是final的。
因为局部变量不知道在什么时候会被销毁,所以只能获得其一个只读的副本
哦,酱子啊,谢谢。新手见谅
【 在 yangnick 的大作中提到: 】
: isAllTextsCompleted是外部类的成员吧,只有局部变量才一定得是final的。
: 因为局部变量不知道在什么时候会被销毁,所以只能获得其一个只读的副本