Java:多态性应用于Map泛型类型

tso*_*tsi 3 java generics polymorphism

我希望有一个函数(例如)在两种情况下都输出Map的所有值:

Map<String, String> map1 = new HashMap<String, String>();
Map<String, Integer> map2 = new HashMap<String, Integer>();
output(map1, "1234");
output(map2, "4321");
Run Code Online (Sandbox Code Playgroud)

以下似乎不起作用:

public void output(Map<String, Object> map, String key) {
    System.out.println(map.get(key).toString()); 
}
Run Code Online (Sandbox Code Playgroud)

两者不StringInteger型的Object

man*_*uti 9

Map<String, String>不延伸Map<String, Object>,就像List<String>没有延伸List<Object>.您可以将值类型设置为?通配符:

public void output(Map<String, ?> map, String key) {  // map where the value is of any type
    // we can call toString because value is definitely an Object
    System.out.println(map.get(key).toString());
}
Run Code Online (Sandbox Code Playgroud)