您可以在GWT客户端中使用Java Reflection api吗?

2022-09-01 20:41:08

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


答案 1

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

要内省的 Bean 可以扩展一个类,该类具有定义为

public Object getProperty(String propertyName){}

我们称之为类 。IntrospectionBean

假设您将bean定义为:

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

GWT生成器将有权访问MyBean的所有字段,并且可以在GWT编译时迭代MyBean的所有字段后生成该方法。getProperty(String propertyName)

生成的类可能如下所示:

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;
    }
}

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

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


答案 2

我去过那里,解决方案确实是使用延迟绑定和生成器。您可以在此处看到生成器的使用,以克服GWT客户端中反射的不足:

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

希望它有帮助。


推荐