Introduction
For maximum efficiency, GWT compiles your Java source into a monolithic
script. Now gwt-ent provide a reflection implement by gwt code generator
mechanism.
This Framework support
- Class http://code.google.com/p/gwt-ent/source/browse/trunk/gwtent/src/main/java/com/gwtent/reflection/client/ClassType.java
- Field http://code.google.com/p/gwt-ent/source/browse/trunk/gwtent/src/main/java/com/gwtent/reflection/client/Field.java
- Method http://code.google.com/p/gwt-ent/source/browse/trunk/gwtent/src/main/java/com/gwtent/reflection/client/Method.java
- Constructor http://code.google.com/p/gwt-ent/source/browse/trunk/gwtent/src/main/java/com/gwtent/reflection/client/Constructor.java
- Metedata http://code.google.com/p/gwt-ent/source/browse/trunk/gwtent/src/main/java/com/gwtent/reflection/client/HasMetaData.java
- Annotation http://code.google.com/p/gwt-ent/source/browse/trunk/gwtent/src/main/java/com/gwtent/reflection/client/HasAnnotations.java
How to use
# add Annotation Or Reflection Marker interface into your pojo class
@Reflectable
public class TestReflection{
}
public class TestReflection implements Reflection{
}
@Reflect_Domain
public class TestReflection{
}
# get ClassType.
ClassType classType = TypeOracle.Instance.getClassType(TestReflection.class);
For example:
public void testReflection(){
TestReflection test = new TestReflection();
ClassType classType = TypeOracle.Instance.getClassType(TestReflection.class);
test.setString("set by code");
System.out.println("after SetByCode:" + test.getString());
System.out.println("after SetByCode:" + classType.invoke(test, "getString", null));
classType.invoke(test, "setString", new Object[]{"set by invoke"});
System.out.println("after SetByInvoke:" + classType.invoke(test, "getString", null));
}
}
The output is :
after SetByCode:set by code
after SetByCode:set by code
after SetByInvoke:set by invoke
Control you javascript size
GWTENT provide you more power to control how much reflection information
created.
The Class Scope
You can control whether have:
- Class Annotation
- Fields
- Methods
- Constructors
- Field and Method Annotations
- Relation Types(The field type, the return type of method, the type of
Parameters)
- Super Classes ( all the super classes of this class will generate reflection
information)
- Assignable Classes (all assignable classes. if annotate to a class, this is
mean All subClasses will generate reflection information; if annotate to a
interface, then all implement classes will generate reflection information; if
annotate to an annotation, then all types annotated by this annotation will
generate reflection information)
Click Here For more Information
The Field/Method Scope
You can control whether have:
- Annotations
- Field Type
- Method Return Type
- Method Parameter Type
Click Here For more Information
The TestCase
ReflectionTestCase
Understand Reflection Classes
http://code.google.com/p/gwt-ent/source/browse/trunk/gwtent/src/main/java/com/gwtent/reflection/client/
分享到:
相关推荐
【标题】:“GWT反射”是指在Google Web Toolkit (GWT)环境中利用Java的反射机制来操作类和对象的一种技术。GWT是一个开源框架,它允许开发者使用Java语言编写客户端Web应用,然后编译成高效的JavaScript代码运行在...
标题中的“gwt反射”指的是Google Web Toolkit (GWT) 中的反射机制。GWT 是一个用于构建富互联网应用程序(RIA)的开放源代码Java框架,它允许开发者使用Java编程语言来编写前端应用,然后通过编译器将Java代码转换...
在传统的GWT应用中,由于JavaScript引擎的限制,反射功能是不可用的,但GWT反射库解决了这个问题,使开发者可以充分利用Java的动态性。 GWT反射库的工作原理是将Java的反射API转换为JavaScript代码,这样在客户端...
- **反射与垃圾回收**:GWT不支持Java的反射机制,以提高性能和减少复杂性。JavaScript引擎的单线程性质使得GWT中的`synchronized`关键字无效,同时没有垃圾回收机制,开发者需手动管理内存。 3. **运行时库支持**...
- **反射与序列化**:GWT不支持Java的反射机制,也不支持标准的序列化机制,而是提供了一个RPC机制来处理对象的序列化和反序列化。 - **垃圾回收**:由于JavaScript环境的限制,GWT无法提供与Java类似的垃圾回收机制...
5. **反射**:GWT不支持Java的反射机制,但提供GWT.getTypeName(Object)来获取对象的类名。 6. **无用对象清理**:JavaScript不支持垃圾回收,GWT无法在Web模式下清理JAVA对象。 7. **严格浮点运算**:GWT不支持...
然而,某些特性在JavaScript中无法完全实现,如long类型被映射为double,多线程同步关键字`synchronized`仅作标记,反射机制受限,以及严格浮点运算不受支持。 2. **运行时库**:GWT模拟了Java运行时环境的一部分,...
5. **反射与动态类型**:GWT不支持Java的反射机制,以提高效率和优化编译结果。`GWT.getTypeName(Object)`提供了一种获取对象类名的方法。 6. **无用对象清理**:JavaScript没有垃圾回收机制,因此GWT在Web模式下...
- **反射**:为了提高性能,GWT 将 Java 源代码编译为单一集成脚本,不支持类的动态装载或反射。尽管如此,可以通过 `GWT.getTypeName(Object)` 查询对象的类名。 - **垃圾回收**:由于 JavaScript 不支持垃圾回收,...
- **反射**:GWT不支持Java的反射机制,但可以通过GWT.getTypeName(Object)获取对象的类名。 - **无用对象清理**:GWT不支持JavaScript的垃圾回收,因此开发者需要手动管理客户端对象。 - **浮点数处理**:GWT不...
4. **反射**: 不支持反射机制,以提高执行效率。 5. **对象清理**: 不支持WEB模式下的Java对象清理。 6. **浮点运算**: 不支持 `strictfp` 关键字,对于需要高精度的浮点运算,建议在服务端进行处理。 7. **正则...
使用 GWTTestCase 测试 GWT 应用会比纯 Java 测试慢,而且不能使用基于反射的工具,比如模拟测试框架。如果尝试使用常规测试示例,那么会遇到这个错误:ERROR: GWT.create() is only usable in client code!...
使用GWTTestCase测试GWT应用程序可能会很痛苦-比使用纯Java测试要慢,并且您不能使用基于反射的工具(例如模拟框架)。 但是,如果您尝试使用正常的测试用例来测试窗口小部件,则可能会遇到以下错误: ERROR: GWT....
Dagger 2通过注解驱动的编译时处理,生成所需的依赖关系代码,提供高效且无反射的依赖注入。 **GWT与Dagger 2的结合** 在GWT-Dagger2-Demo项目中,Dagger 2被用来管理GWT应用中的依赖关系。通过使用Dagger 2,...
这意味着您可以不受限制地使用任何Java工具:JUnit,反射,Easymock,Mockito等。 编写测试如下所示: @Testpublic void clickOnButtonShouldDisplayMessageInLabel() { // Arrange SampleView view = new ...
Gwt-Bean 是一个针对 Google Web Toolkit (GWT) 平台设计的库,它借鉴了 Spring 框架中的 BeanWrapper 概念,旨在帮助开发者更方便地处理 Java 对象与 JavaScriptObject 之间的交互。在 GWT 开发中,由于浏览器端...
- **反射**:为了提高效率,GWT将Java源代码编译成单一的脚本,并不支持动态加载类。 ### 三、GWT运行时库 GWT的运行时库模拟了Java运行时库的一个相关子集,提供了在Web环境中执行Java程序所需的功能。这包括但不...