很抱歉,如果解决方案很简单,或者问题已经提出,我开始使用Java,我找不到这个问题的答案。
基本上,我寻求未来/承诺机制,例如像C ++ 11提供的那样。似乎Android上的Java不提供此功能。我会返回一个未来,其中的值可以由听众设定。
以下是我正在努力的代码:
class SettableFutureTask extends FutureTask<Boolean> {
public void setValue (boolean value) {
set (new Boolean (value));
}
}
Future<Boolean> future = new SettableFutureTask (new Runnable () {
public void run () {
...
mManager.setListener (new Listener (SettableFutureTask.this));
}
});
return future;
目标是听众将设定未来的价值,因此SettableFutureTask
提供公开setValue()
。
我对此代码的问题是从SettableFutureTask
中的run()
方法中访问Runnable
的实例。我也尝试重写某种Runnable和FutureTask类来实现这个目的,但没有用。
我该如何解决这个问题?谢谢,
答案 0 :(得分:0)
如果要从run()访问实例,可以尝试将未来声明为final,因此可以从方法范围内获取:
final Future<Boolean> future = new SettableFutureTask (new Runnable () {
public void run () {
...
mManager.setListener (new Listener (future));
}
});