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中使用反射.