【问题标题】:Autocomplete for generic types in EclipseEclipse 中泛型类型的自动完成
【发布时间】:2012-07-04 01:05:11
【问题描述】:

“通过接口引用对象”是一个很好的实践,如 Effective Java 中所述。 所以例如我更喜欢

List<String> al = new ArrayList<String>();

结束

ArrayList<String> al = new ArrayList<String>();

在我的代码中。一件烦人的事情是,如果我输入 ArrayList&lt;String&gt; al = new 然后在 Eclipse 中按 Ctrl+Space 我会得到 ArrayList&lt;String&gt;() 作为提议。但是如果我输入 List al = new 然后按 Ctrl+Space 我将只得到定义匿名内部类的建议,而不是诸如 new ArrayList&lt;String&gt;() 之类的建议,99% 的情况是什么,或者例如 new Vector&lt;String&gt;()

问题:有没有办法让子类作为泛型类型的提案?

【问题讨论】:

  • 建议“使用番石榴和Lists.newArrayList()会不会太厚脸皮?
  • 当然很好,但实际上我想让所有子类都作为提案,而不仅仅是列表。
  • @JonSkeet 你会添加一个新的依赖项(我的意思是你无论如何都想添加它,但假设不是)只是为了将new ArrayList&lt;&gt;() 更改为Lists.newArrayList()
  • 可以肯定的是,我不确定我是否想在没有 Guava 作为依赖项的情况下启动 any Java 项目...

标签: java eclipse generics autocomplete effective-java


【解决方案1】:

我建议先编写表达式,然后点击Ctrl+2, L。然后你可以命名变量,然后是Enter, Down, Enter。完成。

【讨论】:

  • 但它看起来像将变量类型填充为ArrayList 而不是List 例如(所以你得到相同的结果)。
  • @PaulBellora:您错过了键序列,它选择了变量建议类型列表中的第二个建议。那应该是 List,其中 ArrayList 将是第一个。
【解决方案2】:

根据您编写此类代码的个人风格,这是受@Ben Schulz 回答启发的替代方案。如果你通常先写作业,比如

al = new ArrayList<String>();

然后您可以使用Ctrl+1 启动“创建局部变量”快速修复。点击Tab 现在将直接打开您选择List 类型的类型选择。

【讨论】:

    【解决方案3】:

    JDK 1.7 不需要在等号右边指定泛型类型。 首选项 -> Java -> 1.6 的编译器

    【讨论】:

      猜你喜欢
      • 2014-09-18
      • 2013-06-07
      • 2012-04-09
      • 2013-08-15
      • 2015-04-07
      • 2011-04-05
      • 2019-03-08
      • 1970-01-01
      相关资源
      最近更新 更多