我正在使用Java 8并拥有以下代码:
public WeatherDTO(Map<?,?> mappedJsonData) {
if (mappedJsonData == null || mappedJsonData.isEmpty()) {
return;
}
List<?> weather = (List<?>)mappedJsonData.get("weather");
if (weather != null && !weather.isEmpty()) {
this.weather = (String) ((Map<?,?>)weather.get(0)).get("description");
}
Map<?,?> jsonMain = (Map<?,?>)mappedJsonData.get("main");
if (jsonMain != null && !jsonMain.isEmpty()) {
this.temperature = (double)jsonMain.get("temp") - 273.0;
this.humidity = (int)jsonMain.get("humidity");
}
}
当我在Eclipse和嵌入式Tomcat中运行Web应用程序时,此代码可以正常工作。 Eclipse Problems视图中也没有显示问题。
但是当我从我的shell / bash中启动maven编译时出现以下错误:
[错误]编译错误: [INFO] ----------------------------------------------- --------------
[ERROR] /home/xxx/xxx/xxx/src/main/java/xxx/xxx/xxx/weather/WeatherDTO.java:[52,64]不兼容的类型:捕获#1?无法转换为双重
[ERROR] /home/xxx/xxx/xxx/src/main/java/xxx/xxx/xxx/weather/WeatherDTO.java:[53,58]不兼容的类型:捕获#2?无法转换为int
有人知道我做错了什么吗? maven编译器插件似乎是最新的,我的JAVA_HOME指向Java 8版本。
pom.xml中的代码段
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<showWarnings>false</showWarnings>
<showDeprecation>false</showDeprecation>
</configuration>
</plugin>
java.version的配置是1.8; Maven是3.0.4。
答案 0 :(得分:4)
我得到了和你一样的错误。但是以下代码修复了它。我已经将代码设置为方法而不是构造函数,但我认为你可以忽略它,是吗?
private String weather;
private double temperature;
private int humidity;
public void WeatherDTO(Map<?, ?> mappedJsonData) {
if (mappedJsonData == null || mappedJsonData.isEmpty()) {
return;
}
List<?> weather = (List<?>) mappedJsonData.get("weather");
if (weather != null && !weather.isEmpty()) {
this.weather = (String) ((Map<?, ?>) weather.get(0)).get("description");
}
Map<?, ?> jsonMain = (Map<?, ?>) mappedJsonData.get("main");
if (jsonMain != null && !jsonMain.isEmpty()) {
this.temperature = (Double) jsonMain.get("temp") - 273.0;
this.humidity = (Integer) jsonMain.get("humidity");
}
}
答案 1 :(得分:1)
它适用于对象而不是基本类型。