Eclipse STS无法使用java 8解析目标类型

Eclipse STS无法使用java 8解析目标类型,eclipse,java-8,Eclipse,Java 8,我有下面的代码在STS(3.8.4)中出错说 类型不匹配:无法从Map转换到Map您应该升级,这是一个eclipse编译器问题(我尝试过搜索它,但没有运气)到eclipse-Oxygen Map<String, Object> attributeMappings; @SuppressWarnings("unchecked") public void test(Map<String, Object> attributeMappings) { this.attri

我有下面的代码在STS(3.8.4)中出错说


类型不匹配:无法从
Map
转换到
Map您应该升级,这是一个eclipse编译器问题(我尝试过搜索它,但没有运气)到
eclipse-Oxygen

Map<String, Object> attributeMappings;


@SuppressWarnings("unchecked")
public void test(Map<String, Object> attributeMappings) {
    this.attributeMappings = new HashMap<>(attributeMappings != null 
                 ? attributeMappings : Collections.EMPTY_MAP);
}
地图属性映射;
@抑制警告(“未选中”)
公共无效测试(地图属性映射){
this.attributeMappings=新HashMap(attributeMappings!=null
?属性映射:集合。空映射);
}
对于我来说,使用
javac-8
和eclipse-oxygen最新版本编译就可以了


还请注意,您可以将
Collections.EMPTY_MAP
替换为
Collections.emptyMap()
,它也可以工作。

这是HashMap()接受的类型,但是这个.attributeMappings的类型是什么?这将确定您正在创建的
HashMap
K
V
的类型
而不是
集合。空映射
有效,但我认为这是“更改源代码”。@greg-449如果
这样做。属性映射
属性映射
确实都是
映射
类型;没关系,它仍然可以工作。@greg-449这很奇怪,我可能错过了这个例子吗?这在eclipse-java-9、javac8和9中编译得很好
public void test(Map attributeMappings){this.attributeMappings=new HashMap(attributeMappings!=null?attributeMappings:Collections.EMPTY_Map);}
Eclipse Oxygen的最终版本要到6月17日才能发布,所以可能值得等待。@greg-449我使用它来支持java-9,有一些bug(由我打开)只在氧气中修复…我理解,我只是说,如果有人现在要切换到氧气,那么值得等待几天,等待最终释放(我将这样做)。@Eugene如前所述,我需要在不更改代码的情况下修复它。但氧气修复了它…谢谢。。。
Map<String, Object> attributeMappings;


@SuppressWarnings("unchecked")
public void test(Map<String, Object> attributeMappings) {
    this.attributeMappings = new HashMap<>(attributeMappings != null 
                 ? attributeMappings : Collections.EMPTY_MAP);
}