Eclipse自动完成问题

时间:2019-05-03 14:30:25

标签: eclipse content-assist

我在带有Eclipse的Java中经常使用Map。例如

  Map<String, String> map = new HashMap<>();

然后,当我准备添加put时:

 String key = null;
 String value = null;
 // somewhere before the put, key and value get populated with Strings
 map.put(key, value);

问题在于,每次我键入“ map.put”时,Eclipse都会自动将其更改为“ map.compute()”,因此我必须编辑并删除“ com”和“ e”。

我看了看Window->首选项-> Java->编辑器-> Content Assist,但是什么都没有。我想我可以关闭所有内容帮助,但这就像“用洗澡水把婴儿扔出去”。内容帮助中有很多有用的东西。

我的Eclipse:

面向企业Java开发人员的Eclipse IDE。 版本:2018-12(4.10.0) 版本号:20181214-0600 操作系统:Windows 10,v.10.0,x86_64 / win32 Java版本:1.8.0_144

3 个答案:

答案 0 :(得分:4)

没有一个提议的解决方案对我有用。解决的办法是禁用“显示子字符串匹配”(在Preferences -> Java -> Editor -> Content Assist中)。

应考虑这将破坏功能,仅键入所需参考的随机部分,例如键入“ PreparedStatement”不再导致OraclePreparedStatement。我不关心的功能,但这显然是个人喜好问题。

我认为,该选项的名称有点用词不当,因为子字符串方面仅适用于前导内容,而不适用于尾随内容。

更新:在Eclipse 2020-06中,不再存在“显示子字符串匹配”选项。它的位置是“显示子词匹配”,但是即使被禁用,键入map.put的建议仍然包括compute。至少在按相关性而非按字母顺序排序时,put列在compute之前的建议中。

答案 1 :(得分:1)

这似乎是由于不幸的决定,从2018年12月起删除了“代码推荐人”

  

“ ...不幸的是,代码推荐者不会进入2018-12年。”

     

https://bugs.eclipse.org/bugs/show_bug.cgi?id=542689

当前的解决方案是从市场上手动添加它。无法保证它将与Java 11+一起使用。

安装后,您将必须:

  • 重新启动Eclipse
  • 关闭“已安装自动完成”信息页面
  • 尝试一次自动完成,然后选择类似于“启用自动完成”之类的顶部选项

最后再次尝试自动完成,这一次应该可以正常工作

答案 2 :(得分:0)

  

窗口->首选项   Java->编辑器->内容辅助->高级

取消选中“ Java提案(针对任务)”,而是选中常规的“ Java类型提案”,为我解决了此问题。我正在Windows 10上使用Eclipse for Enterprise Java Developers 2019-03。