【问题标题】:How to call a method whose parameter is a Class<Object> and Class<Map>如何调用参数为 Class<Object> 和 Class<Map> 的方法
【发布时间】:2016-03-28 06:55:25
【问题描述】:

我需要调用一个方法,这个方法只是用来反序列化一个json字符串,函数是这样的:

 public <V extends Map<String,List<M>>,M> Object deserializeMap(String json, Class<Map> class1, Class<List> class2)

从它的外观,我知道这意味着这个json字符串可以反序列化为MapList&lt;Object&gt;,而且我知道,这个代表每个json项目的Object是一个名为MessageObj的类,但是如何构造这两个参数让我很困惑。任何人都可以帮助我吗?

【问题讨论】:

  • 为什么不能像deserializeMap(urJsonString,Map.class,List.class) 这样称呼它?

标签: java json class generics


【解决方案1】:

根据方法签名和您的解释,我猜您应该传递具体的类,这些类将用于实例化生成的MapList。在这种情况下,方法签名看起来很奇怪。请注意,根本不使用通用参数。如果您可以更改方法签名,可能最好像这样定义它:

public Object deserializeMap(String json, Class<? extends Map> class1, 
                             Class<? extends List> class2) {
    ...
}

并像这样使用:

deserializeMap(jsonString, HashMap.class, ArrayList.class);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多