Прежде всего - я довольно новичок в Java, поэтому, если вопрос не имеет смысла, дайте мне знать.
В основном я делаю приложение для Android, которое взаимодействует с моим веб-сервисом, и поэтому я создал отдельный класс для взаимодействия с ним, который также включает AsyncTask (я многое удалил из кода здесь только для предварительный просмотр):
public class api {
private String caller = null;
Context that = null;
api(Context that) {
this.that = that;
this.caller = that.getClass().getSimpleName();
}
void call(String action) {
/* .... */
}
new back().execute(param1, param2);
}
void callback(String action, String result){
that.callback(action, result);
}
public class back extends AsyncTask<String, Void, String> {
public String response = null;
protected String doInBackground(String... params) {
response = connection.executeRequest(params[1]);
return response;
}
protected void onPostExecute(String result) {
callback("a", "b");
}
}
}
И когда я использую класс из какой-то части приложения (скажем, SomeClass.class), я делаю:
api WS = new api(this);
WS.call("....");
И он должен выполнять функцию callback, которая есть в SomeClass.
Но ключевая проблема здесь заключается в следующем:
that.callback(action, result);
Eclipse заставляет меня добавить имя класса "вызывающего" в актерском составе:
(SomeClass) that.callback(action, result);
Но это не работает для меня, потому что я использую класс api из множества разных классов, поэтому в идеале мне нужно поместить переменную в приведение. Я получаю название класса "вызывающего" здесь:
this.caller = that.getClass().getSimpleName();
//obviously this won't work:
(this.caller) that.callback(action, result);
Есть ли что-нибудь, чтобы сделать это, или я делаю что-то в корне неправильно?
Спасибо.