我完全困惑了 - 请参阅下面的代码和输出:
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
- 相同的结果。
您能友善地向我解释一下发生了什么吗?
最佳答案
你确定吗someIntegerValue
是 int
/Integer
?添加
System.out.println(someIntegerValue.getClass());
并告诉我们它输出什么。
更大的问题是您的 map 被声明为 Map<String, Object>
。请注意该值为 Object
。因此,编译器将允许任何对象类型作为值,而不会对该值进行编译类型检查。将声明更改为 Map<String, Integer>
如果您的意图是仅允许整数值。
关于Java Map - 整数值转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25936809/