Я смотрел "Архитектура Google Web Toolkit: лучшие практики для разработки вашего приложения GWT" и у меня возникают проблемы с выяснением того, как должна работать серверная часть.
Слайд 21 показывает:
/** The name Command is taken */
interface Action<T extends Response> { }
interface Response { }
interface ContactsService extends RemoteService {
<T extends Response> T execute(Action<T> action);
}
interface ContactsServiceAsync {
<T extends Response> void execute(Action<T> action,
AsyncCallback<T> callback);
}
Я думал, что это значит, что я мог бы создать
public ResponseSubclass execute(ActionSubclass action) { ... }
и gwt выберет этот метод, когда он будет соответствовать моим точным параметрам, но это не так. На данный момент я использую:
if (action.getClass().getName() == ActionSubclass.class.getName())
{
return (T) execute((ActionSubclass)action);
}
но это означает, что я должен продолжать добавлять if к этому методу каждый раз, когда добавляю действие, и мне приходится использовать непроверенные приведения. Есть ли лучший способ сделать эту работу?
примечание: из того, что я читал где-то в другом месте, шаблон команды обычно включает в себя действия, которые необходимо выполнить в подклассе Ac, но поскольку это передает клиентскому объекту для сервера выполнение какого-либо действия, выполнение действия должен быть отделен.