【问题标题】:Explore an Array in GWT without knowing its type在不知道其类型的情况下探索 GWT 中的数组
【发布时间】:2014-06-21 14:48:08
【问题描述】:

我正在使用 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() 方法!

问题是:你有没有在事先不知道数组类型的情况下访问数组元素的方法?

【问题讨论】:

    标签: java arrays gwt reflection


    【解决方案1】:

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

    我建议,修改 gwt-ent 生成器以符合您的要求,并将您贡献的补丁发送给作者,或者可以通过 gwt-reflector 等其他 3 方库更改 gwt-ent。

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

    【讨论】:

    • 感谢您的回答。我不知道 gwt-reflector 库,我会尝试一下,但据我所知,它也不支持探索数组:(
    • 是的,它不支持数组,我认为它支持。所以你必须以某种方式实现该功能。
    • 实际上我什至无法探索列表,也无法探索方法。一般来说,它比 gwt-ent 受限得多,这很遗憾,因为我喜欢 gwt-reflector 是轻量级的。我在 GWT 中自己编写缺少的功能的能力不是很好,但是,如果稍微解释一下,我可以提供帮助。
    • 也许你可以联系作者,我猜他会帮助你的。通常我们(开源开发者)喜欢用户的反馈和贡献。还发现另一个反射项目编辑了我的答案。
    • 感谢 Manolo,实际上我正在与 GWT-reflector 的开发人员联系,他们已经在帮助我(参见 the issues tracker)。目前不支持数组,但有一些方法可以探索列表。
    猜你喜欢
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多