我是GWT的新手。我有以下代码行。
SomeClientServiceAsync someService = GWT.create(SomeClientService.class);
上面的行是什么意思,为什么我不能使用任何其他替代方法来实例化它?
请帮助我!
感谢。
答案 0 :(得分:7)
GWT.create
用于延迟绑定。这允许您根据用户的浏览器提供相同服务的不同实现。请参阅以下问题:
Why use GWT.create() instead of new?
如果您不需要多次实施服务,只需通过新服务创建!
答案 1 :(得分:1)
GWT的工作原理就是像RMI一样创建服务。在这里,您将创建驻留在客户端程序包中的服务SomeClientService。它包含所有可以称为服务器端的功能。
答案 2 :(得分:1)
GWT.create以不同的方式工作:
示例:
<replace-with class="com.x.app.client.ui.base.button.CustomSlicedButtonCellAppearance">
<when-type-is class="com.x.app.client.ui.base.button.CustomButtonCellAppearance" />
<when-property-is name="gxt.css3.enabled" value="false"/>
<when-property-is name="gxt.theme" value="themeName" />
</replace-with>
在这种情况下,只有在不支持css3和给定主题的情况下,它才会使用CustomSlicedButtonCellAppearance来调用GWT.create(CustomButtonCellAppearance.class)。请注意,“when-property-is”是可选的,如果没有提供,它将始终使用该实现用于给定的接口。
示例:
<generate-with class="org.fusesource.restygwt.rebind.RestServiceGenerator">
<when-type-assignable class="org.fusesource.restygwt.client.RestService" />
</generate-with>
在这种情况下,RestServiceGenerator将生成用于提交请求的代码。 另一个例子是UIBinder的工作原理:除了在界面中使用注释外,它还根据ui.xml文件中的内容生成代码。
gwt.xml文件中的声明可以被之后处理的其他声明覆盖,因此如果您使用声明规则的模块,则可以通过在包含该模块的模块的继承声明后声明新规则来更改该规则。原始声明。