我有一个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对象时使用了正确的泛型
答案 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