Определите интерфейс обратного вызова (если он еще не доступен) и сделайте свой метод принятым интерфейсом в качестве параметра. Метод уйдет и выполнит свою работу, и когда он будет завершен, он вызовет обратный вызов.
Пример:
int synchronousMethod(int arg0, String arg1) {
int result = doStuff();
return result;
}
становится
void asynchronousMethod(int arg0, String arg1, Callback callback) {
try {
int result = doStuff();
} catch (Throwable t) {
callback.onFailure(t);
return;
}
callback.onSuccess(result);
}
, где Callback
что-то вроде
interface Callback {
onSuccess(int result);
onFailure(Throwable t);
}
Это предпочтительнее использовать общие типы для Callback
результата (GWT, например, использует общий AsyncCallback<ResultType>
, который идентичен i nterface выше), но так как generics недоступны в 1.4, вы можете использовать Object
и лить или иметь разные интерфейсы Callback
для разных возвратов. Сравните с любым из интерфейсов *Listener
в Swing/AWT.
Не могли бы вы подробнее рассказать, я новичок в теме темы, и я много теряю. код, который я хочу стать в асинхронном такова: для (.....) ... ... methodIWantConvert (String, String, Object); ... ... End-for; Метод, который я хочу преобразовать, является довольно обычным последовательным методом. Бесконечно благодарен. – Myolnir
Поймите. Единственный вопрос, который у меня есть, заключается в том, что мой синхронный метод ничего не возвращает, недействителен, может сделать следующее? общественный интерфейс Обратный звонок { void onSuccess(); void onFailure (Throwable t); } общественного недействительный asynchronousMethod (режим String, String псевдоним, OwnBean ownBean, Обратный вызов) OwnException бросает { попробовать { syncMethod (режим, псевдоним ownBean); } Catch (исключение e) { callback.onFailure (e); возвращение; } callback.onSuccess(); } – Myolnir
Справа. Если это 'void', тогда у вас есть пустой список параметров' onSuccess'. – chrylis