【发布时间】:2015-01-26 04:51:57
【问题描述】:
我有以下代码:
@Override
public void onReceive(Context arg0, Intent arg1)
{
String blabla = "blabla";
Handler connectionStatusHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
//Do something with blabla;
}
};
}
不幸的是,由于 java 处理闭包的方式,它不起作用,我无法使 blabla final。
所以我想也许我可以做这样的事情
@Override
public void onReceive(Context arg0, Intent arg1)
{
String blabla = "blabla";
Handler connectionStatusHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
//Do something with localBlabla;
}
public String localBlabla;
};
connectionStatusHandler.localBlabla = blabla;
}
但它也不起作用,因为 Handler 没有名为 localBlabla 的成员。
从技术上讲,我可以创建一个从 Handler 继承的非匿名类并在那里添加我想要的成员,但在我这样做之前,我想知道也许有人有一些技巧来解决它并将非最终数据传递给内部类
谢谢
【问题讨论】:
-
为什么你不能将
blabla定为最终版本?我看不出有任何理由不将final添加到声明中。 -
我希望他能够引用变量,也许当处理程序将被调用时 blabla 会将他的值更改为其他值。
-
您仍然可以将
blabla的当前值复制到最终变量中。