在不知道其类型的情况下探索GWT中的数组

时间:2014-06-18 15:49:05

标签: java arrays gwt reflection

我正在使用GWT构建对象的通用可视化器。为此,我使用gwt-ent提供的反射功能。有了它,我可以探索方法和领域,这对于课程来说已经足够了。我还有一个问题是gwt-ent不允许我探索数组。它给了我组件的类型,但不是get()或set()方法,就像java.lang.reflection.Array那样。

所以我使用了原生的java.lang.reflection.Array,它在调试模式下很奇怪(这怎么可能?),但是当我进入生产模式时,编译器会抱怨。

我尝试过一些技巧,例如将数组转换为带有java.utils.Array.asList(T ... a)的ArrayList,但是没有办法让它工作。我见过类似的问题here。在这种情况下,其中一个建议是导入com.google.gwt.lang.Array.createFrom(..)提供的JSNI方法,但我可以在the source code中看到这个类很遗憾有一个set()方法,但没有get()方法!

问题是:在没有事先知道数组类型的情况下,您是否看到了访问数组元素的方法?

1 个答案:

答案 0 :(得分:0)

GWT编译时不支持反射。它可以在dev模式下工作,因为调试时的大多数代码都是在JVM而不是浏览器中运行的。

我建议,修改gwt-ent生成器以满足您的要求,并通过您的贡献向作者发送补丁,或者通过其他3party库(如gwt-reflector)更改gwt-ent。

我发现另一个有趣的gwt反射项目是gwt-processor似乎没有使用生成器。