将对象(Map <string,string =“”>类型)转换为Map <string,integer =“”>

时间:2017-04-18 11:20:15

标签: java

我有Object类型为Map<String, String>且条目很少的ClassCastException。我希望在将此对象投射到Map<String, Integer>时获得Map<String, String> map1 = new HashMap<>(); map1.put("key1", "value1"); map1.put("key2", "value2"); Object o = map1; Map<String, Integer> map2 = (Map<String, Integer>) o; 。但是演员阵容很成功。为什么这没有抛出任何异常?

o

修改:从map1而不是{{1}}投射。

2 个答案:

答案 0 :(得分:0)

在编译时进行通用检查,而在运行程序时进行转换检查。因此,您在运行时遇到了转换异常。

您将其解析为Integer.parseInt(String)并将值放入map2。

答案 1 :(得分:0)

你确定这是对的吗?  您的示例无法编译:

Error:(21, 60) java: incompatible types: java.util.Map<java.lang.String,java.lang.String> cannot be converted to java.util.Map<java.lang.String,java.lang.Integer>

但是,从map1更改为o,会编译:

//...    
Object o = map1;
Map<String, Integer> map2 = (Map<String, Integer>) o;

也许你正在寻找这样的东西?

Map<String, String> map1 = new HashMap<>();
map1.put("key1", "1");
map1.put("key2", "2");
Map<String, Integer> map2 = new HashMap<>();
map1.forEach((key,value) -> map2.put(key, Integer.parseInt(value)));