我完全糊涂了 - 请看下面的代码并输出:
Map<String, Object> strObjMap= new HashMap<>();
strObjMap.put(SOME_KEY_ONE, someIntegerValue);
strObjMap.put(SOME_KEY_TWO, someIntegerValue);
System.out.println(strObjMap.get(SOME_KEY_ONE).getClass().getCanonicalName());
我得到了java.lang.String
。我尝试了Integer
和int
- 结果相同。
请你如此善良并向我解释发生了什么事?
答案 0 :(得分:4)
您确定someIntegerValue
是int
/ Integer
吗?添加
System.out.println(someIntegerValue.getClass());
并告诉我们它的输出结果。
更大的问题是您的地图被声明为Map<String, Object>
。请注意,该值为Object
。因此编译器将允许任何对象类型为值,没有编译类型检查值。如果您的意图是仅允许整数值,请将声明更改为Map<String, Integer>
。