Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用maven编译器进行JAVA转换_Java_Maven_Compiler Construction_Compilation - Fatal编程技术网

用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-你说得对。它甚至不编译。我将删除最后一部分。非常感谢你指出。