`

gwt反射

    博客分类:
  • gwt
阅读更多

GWTENT 1.0 第一个RC版本发布,从本版本开始,所有包结构及主要的接口将会稳定下来。 

  GWTENT 主要为GWT提供反射Reflection,数据绑定(DataBinding),HTML模板,检验支持(Validation)及一个处于早期的AOP实现。 

http://gwt-ent.googlecode.com/files/gwtent.1.0.0.RC1.zip

 

http://code.google.com/p/gwt-ent/

 

http://code.google.com/p/gwt-ent/wiki/UseReflection

 

 

Gwt延迟绑定介绍

Gwt的延迟绑定是一种gwt对反射机制的一种支持方案。简单的说就是在使用gwt进行代码开发的时候,可以使用接口和抽象类,而不用管它的实现,在编译后或者host模式的情况下,gwt会自己跟模块配置的信息来使用具体哪一个实现类替代代码中的接口和抽象类。

使用说明:

1. 定义接口或者抽象类,然后再定义一个实现类。

2. 在xxx.gwt.xml(模块文件中定义)替换的参数信息和具体替换的类

Xml代码 复制代码 收藏代码gwt <wbr>中的延迟绑定
  1. <replace-with class="com.google.gwt.user.client.impl.DOMImplMozilla">
  2. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  3. <when-property-is name="user.agent" value="gecko1_8"/>
  4. </replace-with>
<replace-with class="com.google.gwt.user.client.impl.DOMImplMozilla"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="gecko1_8"/> </replace-with>


上面的配置是将在firefox浏览器里面使用DOMImpl该类的地方使用DOMImplMozilla这个类进行替换。其中的replace-with是指实际用到的类,when-type-is则是要替换的类,when-property-is则是一些参数信息,可以添加0到多个。另外,关于参数的配置还可以加一些逻辑的限制,如Any,

Xml代码 复制代码 收藏代码gwt <wbr>中的延迟绑定
  1. <any>
  2. <when-property-is name="user.agent" value="gecko"/>
  3. <when-property-is name="user.agent" value="gecko1_8" />
  4. </any>
<any> <when-property-is name="user.agent" value="gecko"/> <when-property-is name="user.agent" value="gecko1_8" /> </any>



3. 在代码中使用
通过GWT.create方法可以动态的获取不同的实现类,如下:
DOMImpl impl = (DOMImpl) GWT.create(DOMImpl.class);
再结合gwt的dom模块的配置信息(如下),impl对象将会根据不同的浏览器而动态采用不同的domimpl类的实现。

Xml代码 复制代码 收藏代码gwt <wbr>中的延迟绑定
  1. <module>
  2. <inherits name="com.google.gwt.core.Core"/>
  3. <inherits name="com.google.gwt.user.UserAgent"/>
  4. <replace-with class="com.google.gwt.user.client.impl.DOMImplOpera">
  5. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  6. <when-property-is name="user.agent" value="opera"/>
  7. </replace-with>
  8. <replace-with class="com.google.gwt.user.client.impl.DOMImplSafari">
  9. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  10. <when-property-is name="user.agent" value="safari"/>
  11. </replace-with>
  12. <replace-with class="com.google.gwt.user.client.impl.DOMImplIE6">
  13. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  14. <when-property-is name="user.agent" value="ie6"/>
  15. </replace-with>
  16. <replace-with class="com.google.gwt.user.client.impl.DOMImplMozilla">
  17. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  18. <when-property-is name="user.agent" value="gecko1_8"/>
  19. </replace-with>
  20. <replace-with class="com.google.gwt.user.client.impl.DOMImplMozillaOld">
  21. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  22. <when-property-is name="user.agent" value="gecko"/>
  23. </replace-with>
  24. </module>
<module> <inherits name="com.google.gwt.core.Core"/> <inherits name="com.google.gwt.user.UserAgent"/> <replace-with class="com.google.gwt.user.client.impl.DOMImplOpera"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="opera"/> </replace-with> <replace-with class="com.google.gwt.user.client.impl.DOMImplSafari"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="safari"/> </replace-with> <replace-with class="com.google.gwt.user.client.impl.DOMImplIE6"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="ie6"/> </replace-with> <replace-with class="com.google.gwt.user.client.impl.DOMImplMozilla"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="gecko1_8"/> </replace-with> <replace-with class="com.google.gwt.user.client.impl.DOMImplMozillaOld"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="gecko"/> </replace-with> </module>

 

分享到:
评论

相关推荐

    GWT反射

    【标题】:“GWT反射”是指在Google Web Toolkit (GWT)环境中利用Java的反射机制来操作类和对象的一种技术。GWT是一个开源框架,它允许开发者使用Java语言编写客户端Web应用,然后编译成高效的JavaScript代码运行在...

    gwt反射 http://code.google.com/p/google-gin/wiki/GinTutorial

    标题中的“gwt反射”指的是Google Web Toolkit (GWT) 中的反射机制。GWT 是一个用于构建富互联网应用程序(RIA)的开放源代码Java框架,它允许开发者使用Java编程语言来编写前端应用,然后通过编译器将Java代码转换...

    GWT Reflection-开源

    在传统的GWT应用中,由于JavaScript引擎的限制,反射功能是不可用的,但GWT反射库解决了这个问题,使开发者可以充分利用Java的动态性。 GWT反射库的工作原理是将Java的反射API转换为JavaScript代码,这样在客户端...

    GWT开发手册.doc

    - **反射与垃圾回收**:GWT不支持Java的反射机制,以提高性能和减少复杂性。JavaScript引擎的单线程性质使得GWT中的`synchronized`关键字无效,同时没有垃圾回收机制,开发者需手动管理内存。 3. **运行时库支持**...

    GWT开发者手册(中文版)

    - **反射与序列化**:GWT不支持Java的反射机制,也不支持标准的序列化机制,而是提供了一个RPC机制来处理对象的序列化和反序列化。 - **垃圾回收**:由于JavaScript环境的限制,GWT无法提供与Java类似的垃圾回收机制...

    GWT初学者手册

    5. **反射**:GWT不支持Java的反射机制,但提供GWT.getTypeName(Object)来获取对象的类名。 6. **无用对象清理**:JavaScript不支持垃圾回收,GWT无法在Web模式下清理JAVA对象。 7. **严格浮点运算**:GWT不支持...

    gwt 开发手册轻松入门gwt

    然而,某些特性在JavaScript中无法完全实现,如long类型被映射为double,多线程同步关键字`synchronized`仅作标记,反射机制受限,以及严格浮点运算不受支持。 2. **运行时库**:GWT模拟了Java运行时环境的一部分,...

    GWT开发者手册v2

    5. **反射与动态类型**:GWT不支持Java的反射机制,以提高效率和优化编译结果。`GWT.getTypeName(Object)`提供了一种获取对象类名的方法。 6. **无用对象清理**:JavaScript没有垃圾回收机制,因此GWT在Web模式下...

    GWT开发者手册_v2

    - **反射**:为了提高性能,GWT 将 Java 源代码编译为单一集成脚本,不支持类的动态装载或反射。尽管如此,可以通过 `GWT.getTypeName(Object)` 查询对象的类名。 - **垃圾回收**:由于 JavaScript 不支持垃圾回收,...

    GWT开发者手册

    - **反射**:GWT不支持Java的反射机制,但可以通过GWT.getTypeName(Object)获取对象的类名。 - **无用对象清理**:GWT不支持JavaScript的垃圾回收,因此开发者需要手动管理客户端对象。 - **浮点数处理**:GWT不...

    GWT学习课件

    4. **反射**: 不支持反射机制,以提高执行效率。 5. **对象清理**: 不支持WEB模式下的Java对象清理。 6. **浮点运算**: 不支持 `strictfp` 关键字,对于需要高精度的浮点运算,建议在服务端进行处理。 7. **正则...

    GWT应用测试工具GwtMockito.zip

    使用 GWTTestCase 测试 GWT 应用会比纯 Java 测试慢,而且不能使用基于反射的工具,比如模拟测试框架。如果尝试使用常规测试示例,那么会遇到这个错误:ERROR: GWT.create() is only usable in client code!...

    gwtmockito:更好的GWT单元测试

    使用GWTTestCase测试GWT应用程序可能会很痛苦-比使用纯Java测试要慢,并且您不能使用基于反射的工具(例如模拟框架)。 但是,如果您尝试使用正常的测试用例来测试窗口小部件,则可能会遇到以下错误: ERROR: GWT....

    GWT-Dagger2-Demo:带有 GWT 的 Google Dagger2 演示项目

    Dagger 2通过注解驱动的编译时处理,生成所需的依赖关系代码,提供高效且无反射的依赖注入。 **GWT与Dagger 2的结合** 在GWT-Dagger2-Demo项目中,Dagger 2被用来管理GWT应用中的依赖关系。通过使用Dagger 2,...

    gwt-test-utils:gwt-test-utils是一个Java框架,允许以高效,简便的方式测试GWT客户端代码

    这意味着您可以不受限制地使用任何Java工具:JUnit,反射,Easymock,Mockito等。 编写测试如下所示: @Testpublic void clickOnButtonShouldDisplayMessageInLabel() { // Arrange SampleView view = new ...

    gwtbean:一个使用 JavaScriptObject 的概念,如 Spring BeanWrapper

    Gwt-Bean 是一个针对 Google Web Toolkit (GWT) 平台设计的库,它借鉴了 Spring 框架中的 BeanWrapper 概念,旨在帮助开发者更方便地处理 Java 对象与 JavaScriptObject 之间的交互。在 GWT 开发中,由于浏览器端...

    Google Web Toolkit

    - **反射**:为了提高效率,GWT将Java源代码编译成单一的脚本,并不支持动态加载类。 ### 三、GWT运行时库 GWT的运行时库模拟了Java运行时库的一个相关子集,提供了在Web环境中执行Java程序所需的功能。这包括但不...

Global site tag (gtag.js) - Google Analytics