Eclipse Auto Complete: Java 1.7 Generics Diamond

2022-09-03 12:51:12

我刚刚升级到Luna(从开普勒),我注意到一些小问题(但很烦人):
自动完成缺乏在变量初始化中为已经指定的泛型生成钻石“<>”的可能性。例如,当我键入以下内容时:

Set<String> mySet = new HashSet 

我期望,它会自动完成

Set<String> mySet = new HashSet<>();

而不是

Set<String> mySet = new HashSet<String>();

我使用的是 JDK 1.7,并且合规性级别也设置为 1.7。

同样非常奇怪的是,当我在自动完成期间多次点击STRG + Space时,直到它再次达到java自动完成,然后按Enter键,它就会提供预期的钻石。

这对我来说非常像一个错误。
此错误是否“已知”,此问题是否有任何解决方法?找不到与此主题相关的任何内容。


答案 1

您很可能已安装代码推荐器插件。不幸的是,此插件受到错误 #435597 的影响,这会破坏此功能。

仅当您在“'默认'内容助手列表”中启用了某些建议类型Eclipse 首选项> Java > 编辑器>内容助手>高级)时,才会发生此错误。例如,我可以通过禁用以下建议类型来找回正确的行为:

  • 基本建议
  • 联合行动计划提案
  • 模板提案

(如果您使用的是代码模板,则最后一个可能是最烦人的...)

当你使用+循环时,你实际上到达了“Java提案”(而不是“智能Java提案(代码推荐器)”),这不受此错误的影响。ctrlspace

此 bug 计划在 2015 年 6 月发布 2.2.0您目前能做的最好的事情是:

  • 使用建议来检查哪些触发了错误(在执行此操作之前,可能会截取当前设置的屏幕截图);
  • 投票支持错误 #435597错误 #435660 以修复它们;
  • 建议补丁修复这些错误:-)

答案 2

对于仍在使用最新 Eclipse 版本遇到此问题的任何人:

打开“窗口”>“首选项”>“Java”>“编辑器”>“内容助手”>“高级”。在“默认建议类型”下打开的对话框中:

  • 检查“Java提案”
  • 取消选中“Java 提案(以任务为中心)”

Proposal kind selection


推荐