出于好奇,我检查了autobeans
是如何生成的。我发现它使用sun.misc.ProxyGenerator
类生成autobean
proxies
,它使用reflections
。但我不明白,它是如何在客户端工作的。这些方法使用reflections
编译到javascript
?这是否意味着我可以在客户端使用自己的反射?
代理实例仅在服务器上使用,在真正的JVM中,反射可以工作。你是正确的,GWT代码不能使用一般反射。
要在客户机上生成它们,则使用GWT Generator。这将在GWT编译器仍在运行时完成所有的反射,因此是在真实的JVM中,并创建实现autobean接口和工厂的新类。
com.google.web.bindery.autobean.gwt.rebind.AutoBeanGenerator
类主要负责这项工作,com.google.web.bindery.autobean.gwt.rebind.model
包的内容(在某种程度上,com.google.web.bindery.autobean.shared
)协助这项工作。