你能在GWT客户端使用Java Reflection api吗?

Far*_*san 24 java reflection gwt client-side

是否可以在GWT客户端使用java反射API?我想使用反射来查找Javabean上的属性值.这可能吗?

小智 12

您可以使用GWT Generators功能,该功能允许您在GWT编译阶段生成代码.

您想要内省的bean可以扩展具有定义为的方法的类

public Object getProperty(String propertyName){}
Run Code Online (Sandbox Code Playgroud)

我们叫这个班IntrospectionBean.

假设您将bean定义为:

public class MyBean extends IntrospectionBean {
    private String prop1;
    private String prop2;
}
Run Code Online (Sandbox Code Playgroud)

GWT生成器可以访问MyBean的所有字段,并且可以getProperty(String propertyName)在迭代MyBean的所有字段之后在GWT编译期间生成该方法.

生成的类可能如下所示:

public class MyBean extends IntrospectionBean {
    private String prop1;
    private String prop2;

    public Object getProperty(String propertyName) {
        if ("propr1".equals(propertyName)) {
            return prop1;
        }
        if ("propr2".equals(propertyName)) {
            return prop2;
        }

        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以简单地使用myBean.getProperty("prop1"),以便在运行时根据它的名称检索属性.

在这里,您可以找到如何实现gwt生成器的示例


Joa*_*ira 12

我一直在那里,解决方案确实是使用延迟绑定和生成器.您可以在此处看到使用Generators来克服GWT客户端中缺少Reflection的问题:

http://jpereira.eu/2011/01/30/wheres-my-java-reflection/

希望能帮助到你.


Fai*_*roz 10

由于GWT代码被转换为Javascript,因此不支持直接使用反射API.

有一个小项目GWT-Reflection,允许在GWT中使用反射.

  • 有趣的项目.注意:在使用之前,请确保您可以接受GPL许可. (2认同)