【问题标题】:eclipse not inserting "diamond" operator in a java 8 projecteclipse没有在java 8项目中插入“钻石”运算符
【发布时间】:2014-07-19 14:45:04
【问题描述】:

我有一个配置为使用 Java 8 的 maven 项目,一切正常,eclipse 编译代码如下:

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

当我在错误/警告选项卡上设置它时,它甚至会抱怨旧式代码(“类型参数的冗余规范”)。问题是,我无法弄清楚如何让它在自动完成时默认使用这种语法 - 我很确定我之前看到它工作但现在每当我用 ctrl-space 插入构造函数时,它都会坚持添加参数,我不喜欢。

谁能提示要检查什么设置以使内容辅助插入 而不是 ?或者可能与我使用的是 Java 8 而不是 Java 7,或者我在 maven 上有关?

【问题讨论】:

  • eclipse 使用的是哪个 eclipse 以及 java 编译器是什么?
  • 您确定您项目的目标 java 版本(不是 JRE 设置)至少是 Java 7?
  • 它是 STS 3.5.1,它肯定使用 Java 8,因为我什至没有安装其他版本(JDK 或 JRE)。项目的目标版本也很好。原来我一定是在 Content Assist 设置中搞砸了(也可能是我安装并后来删除的 Scala 插件改变了一些东西,或者其他一些插件)。无论如何,下面 Marco 的提示有所帮助,现在它再次起作用,自动插入菱形语法。 :)

标签: java eclipse maven


【解决方案1】:

几分钟前我遇到了这个问题,并通过输入一个 SO 问题解决了一半。

在我不久前摆弄高级内容辅助设置之后,Eclipse 的自动完成显然优先考虑了旧式通用语法。尝试将Java &gt; Editor &gt; Content Assist &gt; Advanced 重置为默认值;这就是为我修复它并返回自动完成以默认插入菱形语法的原因。

【讨论】:

  • 我有同样的问题,但不幸的是,重置并不能解决我的问题(而且我使用 Java 8 代码合规性)。
  • 太棒了。这也解决了我的问题,并且我有一个几乎全新的安装。我所做的只是导入一个 maven 项目并设置一些评论模板。似乎默认值并不是真正的默认值。
  • 也从未接触过这些设置。我认为这与 Eclipse 试图推动 MyLyn 有关。见stackoverflow.com/questions/1543588/…
  • 谢谢。我对实际的提案类型很好奇,结果发现“Java 提案”在我的偏好中被关闭了。
  • 在 Eclipse 2020-06 中仍然相同:检查“Java 提案”(也可以通过单击建议的“恢复默认值”来完成)修复了自动完成。 OOTB,仅检查了 Mylyn 的“Java 提案(以任务为中心)”并导致旧式自动完成...
【解决方案2】:

我遇到了同样的问题,但是将所有内容设置为默认值的解决方案对我不起作用。对我有用的是 Java &gt; Editor &gt; Content Assist &gt; Advanced 并取消选中上方窗口中的 JPA 提案

【讨论】:

    【解决方案3】:

    我尝试了这里提到的其他两个解决方案,但没有一个对我有用。对我有用的是Java &gt; Editor &gt; Content Assist &gt; Advanced 并在上框中选中Java Non-Type Proposals

    在不同的安装中,这也必须在下部区域进行检查,但它在两个 eclipse 安装中都有效。

    【讨论】:

    • 不适合我,适合我的是 Java > 编译器,将合规级别设置为 1.8 而不是 1.7
    【解决方案4】:

    对我有用的是启用/检查Java &gt; Editor &gt; Content Assist &gt; Advanced &gt;Java 提案。 (设置页面上半部分)

    【讨论】:

      【解决方案5】:

      我在使用 maven 编译时发现了这个错误。为了解决这个问题,我必须将我的 JAVA_HOME 环境变量修复为正确的 JDK。

      【讨论】:

        【解决方案6】:

        好吧,似乎不同的建议在不同的建议列表中,我认为菱形运算符构造函数在“Java Non-type Proposals”中,而带参数的则在“Java Proposals”中。当两个列表都包含在默认建议列表中时,后一个选项首先出现(尽管您仍然可以按箭头选择“菱形”选项)。对我来说,如何对其进行排序使其成为列表中的第一个(因此通过 [ctrl+space, enter] 插入)的唯一选择是禁用其他选项:

        【讨论】:

          猜你喜欢
          • 2014-05-15
          • 1970-01-01
          • 1970-01-01
          • 2011-09-10
          • 2011-11-25
          • 1970-01-01
          • 2016-08-15
          • 2014-09-18
          相关资源
          最近更新 更多