如何將外部匿名類引用傳遞給Java中的內部匿名類中的方法?通過外部anon類引用內部匿名類中的方法
我有一個方法,使異步調用服務器 - sendCall(some_args, callback)
。回調由匿名類表示(我們將其命名爲OuterAnon
)幷包含失敗案例的一種方法。在此方法內部會創建一個消息框,並且每次按下OK按鈕時調用sendCall()
。所以我需要再次將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);
但我想要避免創建ref和傳遞迴調,如:
sendCall(new MyData("resend?"), this); //at the moment we point to MessageListener instead of OuterAnon.
有沒有辦法在Java中做到這一點?
由於這裏的外部類也是匿名的,所以我覺得沒有辦法做到這一點,如果有一些名字外類,那麼它可以與。這 –
Krushna
@參考Krushna,試圖使用'OuterAnon.this'來訪問它導致一個錯誤:「OuterAnon不是一個封閉的類」 – Dragon