、から、に拡張Integer
する、またはを格納し、キャストせずに取得したいと思います。その理由は、最終的には多くの異なるサブタイプがあり(私は説明のために/のみを使用しています)、異なるサブタイプが導入されたときに新しいメソッドを作成する必要がないためです。またはにキャストすることなく、以下を構成して呼び出すことはできますか?Double
Number
HashMap
Number
Integer
getFromMap()
Double
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);
}
}