通过JSNI在GWT中实现类似java.lang.reflect.Proxy的功能

java.lang.reflect.Proxy-like functionality in GWT via JSNI

本文关键字:lang java reflect Proxy 功能 JSNI GWT 实现 通过      更新时间:2023-09-26

对于GWT中的一些自定义客户端-服务器通信代码,我想动态实现一个Java接口,类似于使用Java.lang.reflect.Proxy的方式。由于GWT不包括任何反射支持,而且我不喜欢编写笨重的代码生成器,我想知道是否可以使用JSNI和Overlay类型来实现这一点。

我的想法如下:

  1. 我有一些现有的java接口,以及它的方法及其签名、注释等的表示(因为实际的类对象在GWT中没有任何帮助)
  2. 我将该表示传递到一些JSNI方法中,该方法使用它来构造一个新的Javascript对象并在其上定义相应的方法。这些方法的实际实现相当琐碎,它们只是将参数写入一些数据结构中并返回null
  3. 我从JSNI得到了一个Javascript对象,它可以以某种方式转换为接口类型。当在该实例上调用接口中的方法时,将调用步骤2中定义的相应Javascript方法并保存参数

有人尝试过类似的事情吗?这在原则上不起作用有什么原因吗?

提前谢谢。

是什么阻止您在Java中做同样的事情?有一个工厂方法,将一些数据传递给它,它将返回接口的实现。既然您说实现非常琐碎,那么您将拥有一组有限的具体类。