java - 如何将外部匿名类引用传递给Java内部匿名类中的方法?
我有一种方法可以对服务器进行异步调用 - sendCall(some_args, callback)
. 回调由匿名类(我们给它命名OuterAnon
)表示,并包含一个失败案例的方法。在此方法中,会创建一个消息框,并sendCall()
在每次按下 OK 按钮时调用该消息框。所以我需要OuterAnon
再次传递给该方法。
这是一个代码来演示我的意思:
private void sendCall(MyData data, OuterAnon<Boolean> callback){/*...*/}
private void myCall(final MyData data) {
sendCall(data, new OuterAnon<Boolean>() {
public void onFailure(Throwable throwable) {
final OuterAnon<Boolean> callback = this; //how to avoid this?
MessageBox.show(throwable.getMessage(), new MessageListener() {
public void process(MessageBox.OnClick action) {
if (action == MessageBox.OnClick.OK) {
sendCall(new MyData("resend?"), callback);
}
}
});
}
}
});
}
正如您所注意到的,我在这里为回调提供了一个参考:
final OuterAnon<Boolean> callback = this;
并在这里使用它:
sendCall(new MyData("resend?"), callback);
但我想避免创建引用并传递回调,例如:
sendCall(new MyData("resend?"), this); //at the moment we point to MessageListener instead of OuterAnon.
有没有办法在Java中做到这一点?