我有一个自定义的Map to String方法.它适用于任何具有String键的Map,不限于某些特定的map值类型.javax.jms.Message.getObjectProperty(String name)例如,地图值可能来自方法,或者只是简单的字符串.
以下哪一项是最"适当"的方法签名,为什么,或者都是平等的?
String map2String(Map<String, Object> map){...}
Run Code Online (Sandbox Code Playgroud)
要么
String map2String(Map<String, ?> map){...}
Run Code Online (Sandbox Code Playgroud)
要么
String map2String(Map<String, ? extends Object> map){...}
Run Code Online (Sandbox Code Playgroud)
或(添加编辑)
<E> String map2String(Map<String, ? extends E> map){...}
Run Code Online (Sandbox Code Playgroud)
或者是其他东西?
此外,该方法包含for-each循环,如下所示:
for(Entry<String, ?> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().toString();
}
Run Code Online (Sandbox Code Playgroud)
哪个是entry变量的"正确"类型,是否重要(除了?地图中的不兼容组合,Object在条目类型中).
String map2String(Map<String, ?> map){...}是正确的(? extends Object多余的)
第一个不起作用,因为你无法打电话
Map<String,Integer> myMap = {...}
map2String(myMap); // Map<String,Integer> is not Map<String,Object>
Run Code Online (Sandbox Code Playgroud)
Entry<String, ?>您怀疑输入变量的正确类型.