Eclipse Auto Complete:Java 1.7 Generics Diamond

时间:2014-07-27 18:22:14

标签: java eclipse generics autocomplete

我刚升级到Luna(来自Kepler),我注意到一些小问题(但很烦人):
自动完成缺乏生成钻石的可能性"<>"对于已经指定的变量初始化泛型。例如,当我输入:

Set<String> mySet = new HashSet 

我希望,它会自动完成

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

而不是

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

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

当我在自动完成期间多次击中STRG + Space直到它再次达到java-autocompletion然后按Enter键时,它会发送预期的钻石,这也很奇怪。

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

4 个答案:

答案 0 :(得分:13)

您很可能已安装代码推荐器插件。不幸的是,这个插件会受到bug #435597的影响,从而破坏了这一功能。

只有在“'默认'内容辅助列表”中启用了某些提案种类时,才会出现此错误( Eclipse首选项&gt; Java&gt; ;编辑器&gt;内容辅助&gt;高级)。例如,我可以通过禁用以下提议类型来恢复正确的行为:

  • 基本提案
  • JPA提案
  • 模板建议

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

当您使用 ctrl + space 骑行时,您实际上已经到达“ Java Proposals ”(而不是“智能Java提案(代码推荐器)“),不受此错误的影响。

此错误定于2015年6月release 2.2.0目前最好的是:

  • 使用提案检查哪些内容会为您触发错误(可能会在执行此操作之前截取您当前设置的屏幕截图);
  • {li> 投票 bug #435597bug #435660以解决问题;
  • 建议补丁以修复这些错误: - )

答案 1 :(得分:2)

Set是一个接口而不是实现,因此IDE只能假设您需要一个始终需要泛型类型参数的匿名内部类型。你可以做到

Set<String> mySet = new HashSet + CTRL + SPACE

答案 2 :(得分:1)

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

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

  • 检查“ Java提案”
  • 取消选中“ Java提案(针对任务)”

Proposal kind selection

答案 3 :(得分:-4)

这个钻石功能是在jdk 1.8中引入的,它不适用于jdk 1.7 所以它是oracle引入的新功能。

因此,这只取决于您计算机上的jdk版本而不是ide版本..