Java编译报错Cannot resolve method 'entry' in 'Map'问题求助
报错原因
该编译错误由JDK版本不匹配导致:
Map.entry(K k, V v)是Java 9才正式引入的静态工厂方法,你本地Eclipse/IntelliJ的项目JDK版本配置低于9,编译器无法识别该方法,所以抛出错误。- 在线Java运行环境默认使用JDK 9+版本,因此代码可以正常运行。你定义的类型本身不存在错误。
解决方案
你可以任选以下一种方案解决问题:
方案1:升级项目JDK版本
将本地项目的JDK版本升级到9及以上,同步修改IDE的项目语言级别配置:
- Eclipse:右键项目 →
Properties→ 先在Java Build Path中更换JDK 9+的类库,再进入Java Compiler设置编译级别为9+ - IntelliJ:进入
File→Project Structure→Project Settings,更换项目SDK为9+版本,同步将Language level设置为9+
方案2:修改代码兼容JDK 8及更低版本
把Map.entry(e.getKey(), v)替换为JDK 8就支持的AbstractMap.SimpleEntry实现即可:
// 先新增对应导入 import java.util.AbstractMap; import java.util.List; import java.util.ArrayList; // 剩余Spring相关导入按业务需求补充即可 // 修改flatten方法的对应代码行 private static Set<Entry<String, String>> flatten(Map<String, List<String>> map) { return map.entrySet().stream().flatMap(e -> e.getValue().stream().map(v -> new AbstractMap.SimpleEntry<>(e.getKey(), v)) ) .collect(Collectors.toSet()); }
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

