用maven编译器进行JAVA转换
我有下一个代码:用maven编译器进行JAVA转换,java,maven,compiler-construction,compilation,Java,Maven,Compiler Construction,Compilation,我有下一个代码: public String foobar(Object foo, Map<String,Object> parametersMap){ ... boolean isFoo = (boolean) parametersMap.get("is_foo"); ... } 公共字符串foobar(对象foo,映射参数Map){ ... boolean isFoo=(boolean)参数map.get(“is_foo”);
public String foobar(Object foo, Map<String,Object> parametersMap){
...
boolean isFoo = (boolean) parametersMap.get("is_foo");
...
}
公共字符串foobar(对象foo,映射参数Map){
...
boolean isFoo=(boolean)参数map.get(“is_foo”);
...
}
我希望它抛出一个类强制转换异常(Map.get返回一个对象类型),但它没有。
我正在使用java(7)、spring suit和maven(所有项目都有7级语言)。
该项目编译良好,运行良好
只有一个地方调用此方法,并且始终设置此参数(类型基本布尔)。
编译器是否可能以某种方式分析流并识别它(不引发类强制转换异常的原因)
最好的是工作中的
您将一个基本体布尔值
放入映射
,它将转换为布尔值
。一旦你把它拿出来,你就可以不用强制转换就使用它的原语或对象形式(如果你愿意,也可以使用强制转换)
这两段代码是等效的:
myMap.put("is_foo", true);
及
这是工作中的关键
您将一个基本体布尔值
放入映射
,它将转换为布尔值
。一旦你把它拿出来,你就可以不用强制转换就使用它的原语或对象形式(如果你愿意,也可以使用强制转换)
这两段代码是等效的:
myMap.put("is_foo", true);
及
ClassCastException只会在运行时发生(而不是在编译时),并且仅当您尝试转换的实际实例不可转换为该类型时才会发生。例如:
parametersMap.put("is_foo", true);
parametersMap.put("is_bar", 5);
boolean isFoo = (boolean) parametersMap.get("is_foo"); // This would work fine.
boolean isBar = (boolean) parametersMap.get("is_bar"); // This would throw an exception.
所有这些都很好;您只会在运行时遇到问题
在kostja关于Java自动装箱的回答中添加以下内容:
boolean isFoo = (boolean) parametersMap.get("is_foo");
您从映射中得到的值是一个布尔对象,Java会自动将其解压为布尔基元。ClassCastException只会在运行时发生(而不是在编译时),并且仅当您尝试转换的实际实例不可转换为该类型时才会发生。例如:
parametersMap.put("is_foo", true);
parametersMap.put("is_bar", 5);
boolean isFoo = (boolean) parametersMap.get("is_foo"); // This would work fine.
boolean isBar = (boolean) parametersMap.get("is_bar"); // This would throw an exception.
所有这些都很好;您只会在运行时遇到问题
在kostja关于Java自动装箱的回答中添加以下内容:
boolean isFoo = (boolean) parametersMap.get("is_foo");
您从映射中得到的值是一个布尔对象,Java会自动将其解压为布尔基元。您确定没有强制转换的最后一条语句适用于
映射参数map
?@Puce-坦白地说,不是:)我假设了它。我会尽快试一试。我想这对你不起作用吧?我还没试过,但是把一个对象分配给一个布尔值却没有强制转换。。。一个布尔值到一个对象,可以,但反之亦然,你需要一个强制转换。@Puce-你说得对。它甚至不编译。我将删除最后一部分。非常感谢您指出。您确定最后一个没有强制转换的语句适用于映射参数Map
?@Puce-坦率地说,不:)我是这么想的。我会尽快试一试。我想这对你不起作用吧?我还没试过,但是把一个对象分配给一个布尔值却没有强制转换。。。一个布尔值到一个对象,可以,但反之亦然,你需要一个强制转换。@Puce-你说得对。它甚至不编译。我将删除最后一部分。非常感谢你指出。