如何使用AutoBean实现不同基类型的列表,如String,Integer等?

时间:2012-11-04 17:28:46

标签: java gwt json-rpc autobean

我想用三个参数创建一个JSON-RPC请求 - String,Integer和我自己的对象。请求应如下所示:

{"method":"MyMethod", "params":["text", 123, {"name": "any text", "num": 15}], "id":1}

理想情况下,我想像这样创建一个AutoBean(但它不起作用):

interface JsonRpcRequest {  

    String getJsonrpc();
    void setJsonrpc(String value);

    String getMethod();
    void setMethod(String value);

    List<Object> getParams(); // ERROR: Type Object may not be used
    void setParams(List<Object> params); // ERROR: Type Object may not be used

} 

interface JsonRpcRequestFactory extends AutoBeanFactory {

    AutoBean<JsonRpcRequest> jsonRpcRequest();

}

问题是AutoBean框架不允许在接口内部使用List<Object>

是否有另一种方法可以创建不同类型和非基类型的元素列表/数组?

2 个答案:

答案 0 :(得分:4)

不,你根本做不到。 AutoBean要求所有内容都是静态类型:没有多态,也没有混合类型的地图列表。

你可能会对RequestFactory对JSON-RPC的内置支持感兴趣。

答案 1 :(得分:0)

为什么你的参数都需要传回列表?当然,你不会对StringInteger和另一个Object做同样的事情!只需将它们全部分开寄回。

此外,您没有通过JSON发送自定义Object,而是发送该对象的objid ...所以只需发送Integer id并让服务器处理它。