所以我有一个Map,它有一些值传递给一个方法:
public String doThis(Map<String, ?> context){
.....
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试向此Map添加一个附加属性
String abc="123";
context.put("newAttr",abc);
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误:
方法put(String,capture#8-of?)在Map类型中不适用于参数(String,String)
无论如何在没有"克隆"地图的情况下执行此放置?
Ada*_*man 11
如果要将X类型的值放入泛型中Map,则需要声明Mapas Map<String, ? super X>.在你的例子中X是String,所以:
public String doThis(Map<String, ? super String> context){
.....
}
Run Code Online (Sandbox Code Playgroud)
Map<String, ? super X>表示:具有类型的键String和值为X的类型或X的超类型的映射.所有这些映射都准备好接受String实例作为键,将X实例作为值接受.