2012-01-08 61 views

回答

2

我用MapSerialisation接口之前做过这样的:

interface MapSerialisation { 
    Map<String, Object> toMap(); 
    void fromMap(Map<String, Object>); 
} 

实施,关于每个模型对象,并利用它来进行翻译。

我用另一种方法是谷歌集合变形金刚,并具有模式转换功能,以一个Java对象和Java脚本想的结构之间的转换。

我可能会尝试使用杰克逊连载到JSON虽然。

0

反思是做到这一点的最合理的方式,有些人可能会认为类的getMethods /场在技术上并非完全反映。要做到这一点

的方法之一是实现toHash()函数,在那里你可以明确地创建一个Hashtable /地图的对象。

3

GWT带有一个称为Deferred Binding作为用于反射的替代机制。虽然通常您只通过调用GWT.create(Class<?>)来使用此API,但它也可用于编写在GWT编译过程(即Java到Javascript转换)期间调用的代码生成器。

你可以使用它来创建一个代码生成器,将您的任何POJO类 一个辅助类,其中将包含toMap()fromMap()方法的输出。 GWT提供了一种类似于Java的反射API的API,类似于JClassType,JMethod等等。这些API可以用来为它们的getter和setter查询类(您想要生成代码)并生成上述方法因此。

你的客户端代码会那么基本上是这样的:

Pojo1 pojo1 = ...; 
// Pojo1Transformer is the class that is generated for your domain class Pojo1 
Pojo1Transformer pojo1Transformer = GWT.create(Pojo1Transformer.class); 
Map<String, Object> pojo1AsMap = pojo1Transformer.toMap(pojo1); 
... 
pojo1AsMap.put(Pojo1Transformer.NAME, "New Name"); 
Pojo1 changed = pojo1Transformer.fromMap(pojo1AsMap); 
相关问题