在创建hashmap时正确使用泛型

时间:2014-12-18 17:12:18

标签: java generics

我有一个hashMap,其中key是String,值可以是Integer或long。 现在在一个方法中,我正在创建这个HashMap并传递给像

这样的其他方法
methodA(long a,Integer b)

{
Map<String,? super Number> hm = new HashMap<>();
hm.put("key1",a);
hm.put("key2",b);

invokeMethodC(hm);
}

invokeMethodC(Map<String, ?> uriVariables)
{
....
}

只是想知道我是否在创建hashMap对象时使用了正确的泛型

2 个答案:

答案 0 :(得分:1)

不要使用extends / super,因为你将无法将元素放入Map.It会产生编译错误

Map<String, Number> uriVariables = = new HashMap<>();

答案 1 :(得分:1)

Map<String,? super Number>将在get()上返回Object。最好使用Map<String, Number>然后put()将接受Long和Integer并且get()将返回Number