Java 传递地图<;字符串,字符串>;需要映射的方法<;字符串,对象>;

Java 传递地图<;字符串,字符串>;需要映射的方法<;字符串,对象>;,java,casting,polymorphism,type-conversion,Java,Casting,Polymorphism,Type Conversion,我有一个具有以下签名的方法 public static ActionDefinition reverse(String action, Map<String, Object> args) 我需要做一些类似的事情 (Map<String, Object>) toMap("param1=value1,param2=value2"); (映射)toMap(“param1=value1,param2=value2”); 但我没办法做到 我还尝试了以下方法 public st

我有一个具有以下签名的方法

public static ActionDefinition reverse(String action, Map<String, Object> args)
我需要做一些类似的事情

(Map<String, Object>) toMap("param1=value1,param2=value2");
(映射)toMap(“param1=value1,param2=value2”);
但我没办法做到

我还尝试了以下方法

public static Map<String, String> toMap(String value) {
    Map<String, Object> source = toMap(value);
    Map<String, String> map = new LinkedHashMap<String, String>();

    for(Map.Entry<String, Object> entry: source.entrySet()) {
        map.put(entry.getKey(), (String) entry.getValue());
    }

    return map;
}
公共静态映射toMap(字符串值){
映射源=toMap(值);
Map Map=newlinkedhashmap();
对于(Map.Entry:source.entrySet()){
map.put(entry.getKey(),(String)entry.getValue());
}
返回图;
}
但我猜,由于类型擦除,我得到的方法是重复的

有什么想法吗

--

编辑

我忘了声明我不能改变反向方法,正如许多人到目前为止所建议的那样…

将其转换为simple
(Map)
,但要小心,你在作弊


您始终可以将其强制转换为
Map
,因为它是一个,并且由于向后兼容,您始终可以将原始类型馈送到方法中,因此将参数化类型强制转换为原始类型始终是将其转换为任何其他参数的一种方式。但是,只有当您知道它不会引入错误并且没有合理的选择时,才应该这样做。

如果您可以更改要调用的方法

public static ActionDefinition reverse(String action, Map<String, ? extends Object> args)
publicstaticactiondefinitionreverse(字符串操作、映射参数)

将reverse的方法签名更改为使用泛型

public static ActionDefinition reverse(String action, Map<String, ? extends Object> args)
publicstaticactiondefinitionreverse(字符串操作、映射参数)

对不起,我应该声明我不能更改反向方法。那么,您可以将您的toMap更改为返回地图吗?对不起,我应该声明我不能更改反向方法。您能解释一下为什么这样做有效吗?
public static ActionDefinition reverse(String action, Map<String, ? extends Object> args)
public static ActionDefinition reverse(String action, Map<String, ? extends Object> args)