java.lang.reflect.Proxy-подобная функциональность в GWT через JSNI - PullRequest
3 голосов
/ 03 июня 2011

Для некоторого пользовательского кода связи клиент-сервер в GWT я хотел бы динамически реализовать интерфейс Java, аналогично тому, как это было бы сделано с java.lang.reflect.Proxy. Поскольку в GWT нет поддержки отражений, и я не хочу писать неуклюжий генератор кода, мне интересно, можно ли это сделать с типами JSNI и Overlay.

Я думаю по следующим направлениям:

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

Кто-нибудь пробовал что-то подобное? Есть ли причины, по которым это не сработает в принципе?

Заранее спасибо.

1 Ответ

0 голосов
/ 27 июня 2011

Что мешает вам делать то же самое в Java? Есть фабричный метод, которому вы передаете некоторые данные, и он возвращает реализацию вашего интерфейса. Поскольку вы говорите, что реализация довольно тривиальна, у вас будет ограниченный набор конкретных классов.

...