如何使用 AutoBean 实现不同基本类型(如字符串、整数等)的列表?

Posted

技术标签:

【中文标题】如何使用 AutoBean 实现不同基本类型(如字符串、整数等)的列表?【英文标题】:How to implement with AutoBean a list of different base types like String, Integer, etc.? 【发布时间】:2012-11-04 17:28:46 【问题描述】:

我想创建一个带有三个参数的 JSON-RPC 请求 - 字符串、整数和我自己的对象。请求应如下所示:

"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&lt;Object&gt; inside interface。

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

【问题讨论】:

【参考方案1】:

不,你根本做不到。 AutoBean 要求一切都是静态类型的:没有多态性,也没有混合类型的映射列表。

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

【讨论】:

【参考方案2】:

为什么您的参数都需要在列表中传回?你肯定不会对StringInteger 和另一个Object 做同样的事情!只需将它们分别寄回即可。

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

【讨论】:

感谢您的回答。但我需要一个多功能且简单的系统。例如,我可以向服务器发送一个 sessionId 和复杂的过滤器,其中包括几个字段名和条件数。另外,服务器端不是我可以实现的。我需要一种方法来调用具有任意数量的任意类型参数的过程。

以上是关于如何使用 AutoBean 实现不同基本类型(如字符串、整数等)的列表?的主要内容,如果未能解决你的问题,请参考以下文章

包含类型化成员的参数化 AutoBean 类型

有没有办法降低 GWT AutoBean?

在 GWT 上使用 AutoBean 解析未知类型的 JSON 对象

在 AutoBean 中使用列表

如何序列化 AutoBean (GWT) 中的列表?

第2章 变量和基本类型