我想存储 aInteger
或 a Double
,两者都从Number
, 延伸到 a HashMap
,并在不强制转换的情况下检索它们。原因是我最终会有很多不同的子类型(我只是使用Number
/Integer
来说明),并且我不想在引入不同的子类型时编写新方法。我可以getFromMap()
在下面构造和调用,而不必对Double
or进行强制转换Integer
吗?
public class MapOfContent {
static Map<String, Number> hm = new HashMap<String, Number>();
public static void main(String[] args) {
addToMap(hm, Integer.valueOf(3), "An Integer");
addToMap(hm, Double.valueOf(3.4), "A Double");
Double d;
d = (Double) getFromMap(hm, "A Double");
//d = getFromMap(hm, "A Double");
System.out.println("Result-> " + d);
}
private static void addToMap(Map<String, ? super Number> hashmap, Number c, String key) {
hashmap.put(key, c);
}
private static <T> Number getFromMap(Map<String, ? extends Number> hashmap, String cmsKey) {
return hashmap.get(cmsKey);
}
}