我有下一个代码:
public String foobar(Object foo, Map<String,Object> parametersMap){
...
boolean isFoo = (boolean) parametersMap.get("is_foo");
...
}
我希望它抛出一个类转换异常(Map.get 返回一个对象类型),但它没有。 我正在使用 java (7)、spring suite 和 maven(所有项目的语言级别均为 7)。 该项目编译并运行良好。
只有一个地方调用此方法,并且始终设置此参数(类型原始 boolean 值)。 编译器是否有可能以某种方式分析流程并识别它(不抛出类转换异常)?
最佳
最佳答案
这是Java autoboxing工作中
您将一个原始 boolean 值
放入Map
中,它会转换为 boolean 值
。一旦你把它拿出来,你就可以使用它的原始形式或对象形式而无需转换(或者如果你愿意的话可以使用转换)。
这两段代码是等效的:
myMap.put("is_foo", true);
和
myMap.put("is_foo", Boolean.TRUE);
关于使用 Maven 编译器进行 JAVA 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21166697/