Для некоторого пользовательского кода связи клиент-сервер в GWT я хотел бы динамически реализовать интерфейс Java, аналогично тому, как это было бы сделано с java.lang.reflect.Proxy. Поскольку в GWT нет поддержки отражений, и я не хочу писать неуклюжий генератор кода, мне интересно, можно ли это сделать с типами JSNI и Overlay.
Я думаю по следующим направлениям:
- У меня есть некоторый существующий интерфейс Java, и каким-то образом представление его методов и их подписей, аннотаций и т. Д. (Поскольку фактический объект класса не поможет в GWT).
- Я передаю это представление в некоторый метод JSNI, который использует его для создания нового объекта Javascript и определения соответствующих методов для него. Реальная реализация методов довольно тривиальна, они просто записывают свои аргументы в некоторую структуру данных и возвращают ноль.
- Я получаю объект Javascript от JSNI, который каким-то образом можно преобразовать в тип интерфейса. Когда методы из интерфейса вызываются в этом экземпляре, соответствующий метод Javascript, который был определен на шаге 2, вызывается и сохраняет аргументы.
Кто-нибудь пробовал что-то подобное? Есть ли причины, по которым это не сработает в принципе?
Заранее спасибо.