【问题标题】:Eclipse Auto Complete: Java 1.7 Generics DiamondEclipse 自动完成:Java 1.7 泛型钻石
【发布时间】:2014-09-18 23:38:16
【问题描述】:

我刚刚升级到 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 时,它会提供预期的钻石。

在我看来,这很像一个错误。
这个错误是“已知的”吗?这个问题有什么解决方法吗?找不到与此主题相关的任何内容。

【问题讨论】:

    标签: java eclipse generics autocomplete


    【解决方案1】:

    您很可能已经安装了 Code Recommenders 插件。不幸的是,这个插件受到了bug #435597 的影响,它破坏了这个功能。

    仅当您在“'默认'内容辅助列表”(Eclipse Preferences > Java > Editor > 内容辅助 > 高级)。例如,我可以通过禁用以下提案类型来恢复正确的行为:

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

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

    当您使用 ctrl+space 循环时,您实际上到达了“Java Proposals”(而不是“ Intelligent Java Proposals (Code Recommenders)”),不受此 bug 影响。

    这个错误计划在 2015 年 6 月出现在 release 2.2.0目前你能做的最好的事情是:

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

    【讨论】:

    • 非常感谢这个有用的答案!奇怪的是,当我只选择“智能 Java 提案”作为默认提案类型时,钻石错误得到了修复,正如您在 this 屏幕截图中看到的那样。
    • 是的,如果您只启用它应该始终有效。请注意,您在底部表格中选择的那些不会触发错误,因此您可以通过 ctrl+space 循环访问它们。
    • 酷!对我来说,“基本”建议给我带来了麻烦。谢谢!
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 是的,我只是打错了。我的意思是实现 HashSet 未设置。但这也不起作用。
      • 我有 Luna Build 20140612-0600。这是M7吗?我在哪里可以看到这个版本部分?
      • 它在Help-&gt;About。有趣的是,当我在较新版本的 Luna 上尝试此操作时,发生了同样的问题。当我使用早期版本时,它没有发生
      【解决方案4】:

      这个菱形特性是在 jdk 1.8 中引入的,它不适用于 jdk 1.7。
      所以它是oracle引入的新特性。

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

      【讨论】:

      • 那不是真的。它是在 1.7 中引入的,当我手动输入它时它会编译。关键是:自动完成不再自动完成。 see eclipse help
      猜你喜欢
      • 2012-07-04
      • 2014-05-15
      • 2013-06-07
      • 1970-01-01
      • 2014-05-08
      • 2012-12-29
      • 2012-04-09
      • 1970-01-01
      相关资源
      最近更新 更多