如何使用 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<Object>
inside interface。
是否有另一种方法来创建不同基于和非基于类型的元素的列表/数组?
【问题讨论】:
【参考方案1】:不,你根本做不到。 AutoBean 要求一切都是静态类型的:没有多态性,也没有混合类型的映射列表。
您可能会对 RequestFactory 对 JSON-RPC 的内置支持感兴趣。
【讨论】:
【参考方案2】:为什么您的参数都需要在列表中传回?你肯定不会对String
、Integer
和另一个Object
做同样的事情!只需将它们分别寄回即可。
此外,您不是通过 JSON 发送自定义 Object
,而是发送该对象的 objid
...所以只需发送 Integer id
并让服务器处理它。
【讨论】:
感谢您的回答。但我需要一个多功能且简单的系统。例如,我可以向服务器发送一个 sessionId 和复杂的过滤器,其中包括几个字段名和条件数。另外,服务器端不是我可以实现的。我需要一种方法来调用具有任意数量的任意类型参数的过程。以上是关于如何使用 AutoBean 实现不同基本类型(如字符串、整数等)的列表?的主要内容,如果未能解决你的问题,请参考以下文章