ich eine Methode schreiben möchten, dass die Parameter annehmen können:Java generischer Typ mit Wildcard
Map<String, [the type here could be anything]>
So, hier ist das, was ich codiert:
/**
* Get list value from a map, empty list if there's no key matched
*/
private List<? extends Object> getListValueFromMap(Map<String, List<? extends Object>> map, String key) {
List<? extends Object> list = map.get(key);
return list == null ? EMPTY_LIST : list;
}
Und die EMPTY_LIST
wird wie folgt definiert:
Das Problem ist, dass, wenn ich diese Methode mit folgendem Code aufrufen, Eclipse sagt mir einen Fehler, dass die Der angegebene Parametertyp ist nicht anwendbar.
getListValueFromMap(cityNameMap, "key");
Und der Fehler ist:
The method getListValueFromMap(Map<String,List<? extends Object>>, String) in the type ChinaAreaResource is not applicable for the arguments (Map<String,List<City>>, String)
wo ich mit diesem falschen werde? Hier
ist die Definition von cityNameMap
:
/** map city's name to city list */
private Map<String, List<City>> cityNameMap;
Wie ist 'citiNameMap' definiert? –
Wie ** Map> cityNameMap = null; 'für mich funktioniert gut. –
Was ist der Sinn von 'Collections.unmodiableList (new ArrayList